Install NGINX Controller on RHEL 8 (experimental)

This guide explains how to prepare your RHEL 8 system to install NGINX Controller and the NGINX Controller Agent.

Preparing the NGINX Controller Host

To install NGINX Controller on RHEL 8, you must complete the following steps to allow iptables-based routing for Kubernetes. Failure to complete these steps may cause the installation to hang.

Update System Packages

  1. Before completing any other steps, update the packages on your system:

    sudo yum -y upgrade

Install and Configure Docker

Docker isn’t available on RedHat 8 by default, so you’ll need to add a Docker repository and install the required packages:

  1. Add the Docker repo:

    sudo yum config-manager --add-repo=
  2. Install the Docker packages:

    sudo yum install docker-ce-3:19.03.15-3.el8 docker-ce-cli-1:19.03.15-3.el8
  3. Set up the Docker daemon:

    sudo mkdir -p /etc/docker
    sudo vi /etc/docker/daemon.json

    Paste the following JSON snippet into daemon.json:

        "exec-opts": ["native.cgroupdriver=systemd"],
        "log-driver": "json-file",
        "log-opts": {
            "max-size": "10m",
            "max-file": "2"
        "storage-driver": "overlay2"
  4. Run the following commands to set up the Docker service:

    sudo systemctl start docker.service
    sudo systemctl status docker.service
    sudo systemctl enable docker.service

Install Required Packages and Kernel Modules

Take the following steps to install the required packages and kernel modules.

  1. Install the traffic control utility:

    sudo yum install iproute-tc
  2. Run the following commands to ensure the required kernel modules are loaded at startup:

    cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
  3. To load the required kernel modules immediately, run the following commands:

    sudo modprobe overlay
    sudo modprobe br_netfilter
    sudo modprobe iptable_nat
  4. Run the following commands exactly as shown to configure the network:

    cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
    net.bridge.bridge-nf-call-iptables = 1
    net.ipv4.ip_forward = 1
    net.bridge.bridge-nf-call-ip6tables = 1
  5. Restart the system configuration:

    sudo sysctl --system

Last Steps

Take the following steps to finish preparing the RHEL 8 control plane host for NGINX Controller:

  1. When installing Docker on RHEL 8, the FORWARD rules in the iptables are reset and need to be corrected. To do this, run the following command:

    sudo iptables -P FORWARD ACCEPT
  2. Finally, turn off swap:

    sudo swapoff -a
  3. Complete the steps in the NGINX Controller Installation guide to install NGINX Controller.

Preparing the Data Plane Host

  1. For the NGINX Controller Agent to work on RHEL 8, you need to install the following package on each data plane host:

    sudo yum install -y
    sudo dnf install -y xerces-c
  2. Complete the steps in the NGINX Controller Agent Installation guide to install the NGINX Controller Agent.


You may encounter the following error when installing or updating NGINX Controller on RHEL 8:

Status code: 403 for

In this case, update your subscription manager on each RHEL 8 host as follows:

sudo subscription-manager refresh