NGINX Documentation

Tech Specs for NGINX Controller v3

This guide lists the technical recommendations for NGINX Controller v3 and the Controller Agent. Review this guide before installing or updating NGINX Controller or the Controller Agent.

Note: For the NGINX v2 technical recommendations, please see Technical Specifications for NGINX Controller v2.

Contents


NGINX Controller Technical Specifications

Supported Distributions

NGINX Controller v3 supports the following distributions and architectures.

  • CentOS 7 (x86_64)
  • Debian 9 (x86_64)
  • Red Hat Enterprise Linux 7 (x86_64) - Works with NGINX Controller 3.5 and later
  • Ubuntu 16.04 LTS (x86_64)
  • Ubuntu 18.04 LTS (x86_64)

Supported Deployment Environments

You can deploy NGINX Controller v3 into the following environments:

  • Bare metal
  • Public cloud: Amazon Web Services, Google Cloud Platform, Microsoft Azure
  • Virtual Machine

Supported NGINX Plus Versions

NGINX Controller v3 supports the following NGINX Plus versions:

  • NGINX Plus R22
  • NGINX Plus R21
  • NGINX Plus R20
  • NGINX Plus R19

Supported Browsers

NGINX Controller works best with the newest and the last prior version of these browsers with JavaScript, cookies, and SSL enabled:

Hardware Specifications

NGINX Controller v3 requires the following minimum hardware specifications:

  • RAM: 8 GB RAM
  • CPU: 8-Core CPU @ 2.40 GHz or similar
  • Disk space: 80 GB free disk space

Using Local or External Storage for the Analytics Database

When installing NGINX Controller v3, you can choose the type of volume that’s used to store the analytics database. The types of volumes that are supported are:

Local Storage

When using local storage for the analytics database, we recommend the following specs:

  • 100 IOPS
  • 130 GB free disk space (that’s the standard recommendation of 80 GB + 50 GB for the local analytics database)
Tip: To conserve IO and/or disk space, you can use a separate disk for the local storage directory /opt/nginx-controller/clickhouse_data.

NFS

To use NFS for external storage for the analytics database, consider the following:

  • Make certain that the NFS version used by the server is supported by the client system where you’re installing NGINX Controller.
  • If you’re using NFS v4 file locking or Network Lock Manager (NLM) on the NFS server, make sure that the client system that’s running your NGINX Controller has access to the mount point.
  • The owner of the mount point must be set to 101:101, or the root_sqash option must be disabled on the NFS server.

AWS EBS

You can use Amazon Elastic Block Store (EBS) for the analytics database if NGINX Controller is installed on AWS and the EBS volume is in the same availability zone as the EC2 instance. See the AWS EBS User Guide for instructions on how to create and configure EBS volumes.

To use AWS EBS for the analytics database, use the following configuration:

EC2 Tag:
Key: kubernetes.io/cluster/NGINX-CONTROLLER
Value: owned
IAM Role:

  {
      "Version": "2012-10-17",
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "ec2:AttachVolume",
                  "ec2:DetachVolume",
                  "ec2:DescribeInstances",
                  "ec2:ModifyVolume",
                  "ec2:DescribeVolumes"
              ],
              "Resource": [
                  "*"
              ]
          }
      ]
  }

Firewall / IP Settings

  • DB: Port 5432 TCP – incoming to DB from NGINX Controller host
  • NGINX Controller: Port 443 TCP – incoming from where you are accessing from a browser, for example, an internal network, and NGINX Plus instances
  • NGINX Controller: Port 8443 TCP – incoming from NGINX Plus instances

Note: If you have a firewall running on the NGINX Controller host, enable NAT (masquerade) and open the following ports. These ports are used for internal traffic only and don’t need to be open to the outside.

  • NGINX Controller: 6443 TCP, 2379 TCP, 2380 TCP – incoming requests to the Kubernetes master node; used for the Kubernetes API server and etcd
  • NGINX Controller: 10250 TCP – incoming requests to the Kubernetes worker node; used for the Kubelet API

For more information about these ports, see the Kubernetes guide Installing kubeadm.


Controller Agent Technical Specifications

  • NGINX Controller v3, using the NGINX Controller Agent, can monitor and manage up to 100 NGINX Plus instances.
  • NGINX Controller Agent v3.6 and earlier work only with Python 2.6 and 2.7. Python 3 is not supported. Controller Agent v3.7 and later don’t require Python.

Supported Distributions

The Controller Agent supports the following distributions and architectures:

  • Amazon Linux 2 (x86_64)
  • Amazon Linux 2017.09 (x86_64)
  • CentOS 6.5 (i386, x86_64)
  • CentOS 7 (x86_64)
  • Debian 8 (i386, x86_64)
  • Debian 9 (i386, x86_64)
  • Red Hat Enterprise Linux 6 (i386, x86_64)
  • Red Hat Enterprise Linux 7 (x86_64)
  • Ubuntu 16.04 (i386, x86_64)
  • Ubuntu 18.04 (x86_64)

Supported Distributions for App-Centric Metrics

NGINX Controller v3.1 and later use an Analytics, Visibility, and Reporting daemon (AVRD) to aggregate and report app-centric metrics, which you can use to track and check the health of your apps. To learn more about these metrics, see the “NGINX Metrics Catalog” topic in your NGINX Controller documentation, located at: https://<Controller-FQDN>/docs/analytics/metrics/reference/catalog/.

The following distributions support app-centric metrics:

  • Amazon Linux 2 (x86_64)
  • Amazon Linux 2017.09 (x86_64)
  • Debian 9 (x86_64)
  • CentOS 7.4 (x86_64)
  • Ubuntu 16.04 (x86_64)
  • Ubuntu 18.04 (x86_64)

Open-Source Licenses

The list of open-source packages and their licenses used by NGINX Controller can be found in the downloaded file that is part of the NGINX Controller package. On your NGINX Controller host, see controller-installer/files/license-controller.md.

In addition, see the AskF5 KB article Third-party software for NGINX Controller controller-datacollection-components for third-party software packages that may be used by or distributed with controller-datacollection-components. This information is not included in the license-controller.md that’s mentioned above.