Install NGINX Controller on RHEL 8 (experimental)
Preparing the F5 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
-
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:
-
Add the Docker repo:
sudo yum config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
-
Install the Docker packages:
sudo yum install docker-ce-3:19.03.15-3.el8 docker-ce-cli-1:19.03.15-3.el8 containerd.io-1.3.9-3.1.el8
-
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" }
-
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.
-
Install the traffic control utility:
sudo yum install iproute-tc
-
Run the following commands to ensure the required kernel modules are loaded at startup:
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf overlay br_netfilter iptable_nat EOF
-
To load the required kernel modules immediately, run the following commands:
sudo modprobe overlay sudo modprobe br_netfilter sudo modprobe iptable_nat
-
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 EOF
-
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:
-
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
-
Finally, turn off swap:
sudo swapoff -a
-
Complete the steps in the NGINX Controller Installation guide to install NGINX Controller.
Preparing the Data Plane Host
-
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 https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm sudo dnf install -y xerces-c
-
Complete the steps in the NGINX Controller Agent Installation guide to install the NGINX Controller Agent.
Troubleshooting
You may encounter the following error when installing or updating NGINX Controller on RHEL 8:
Status code: 403 for https://cdn.redhat.com/content/dist/rhel8/8/x86_64/appstream/os/repodata/repomd.xml
In this case, update your subscription manager on each RHEL 8 host as follows:
sudo subscription-manager refresh