Building Wallarm NGINX Plus Ingress Controller from the Source Files¶
Check if you have an NGINX Plus license before you start. You can obtain a 30-day trial license by navigating to the NGINX site. The license consists of two files:
To build the Wallarm NGINX Plus Ingress controller from the source files, do the following:
It is suggested that you build the software on the Linux operating system.
Setting up a Build Environment¶
Make sure that the following tools are installed on your machine:
It is also required that you have a private Docker repository.
Services that provide you with the means to access and manage Docker repositories are known as Docker registries.
You should create a Docker repository if you do not have one.
You can use your own Docker registry or use any service that will provide you with a hosted private Docker repository (e.g., Docker Hub, Google Container Registry, Microsoft Azure Container Registry).
It is strongly recommended that you do not host a Docker image of the Wallarm NGINX Plus Ingress controller in the public Docker repository due to the risk of exposing the NGINX Plus license files to the public.
It is sufficient to obtain access to the Docker Hub registry in order to complete this guide. The registry will provide you with one free-of-charge private Docker repository.
You should gather the following information to continue:
The login and password pair that you use to access the Docker registry
The name of the Docker registry
A path to the repository
Docker registry name
Depending on the service provider chosen, the name of the Docker registry and the path to the repository can be different. Please consult with your service provider’s documentation for more information.
There are some well-known names for the Docker registries:
docker.iofor Docker Hub,
gcr.iofor Google Container Registry,
<your repository name>.azurecr.iofor Microsoft Azure Container Registry.
The Docker’s registry name is a part of the path to the repository. For example, if you are using Docker Hub, the path to access the repository
example-repository created by user
john will be as follows:
Building the Ingress Controller¶
Log in to your Docker registry by executing the following command:
docker login <name of the Docker registry>
You should provide the login and password that you use to access the Docker registry when prompted.
To log in to the Docker Hub registry execute the following command:
docker login docker.io
Depending on your system settings, you could be required to elevate privileges either by issuing the
sudocommand or running the command as the
rootuser in order to execute the
You have the option to allow executing the
dockercommand by the currently logged-in user. To do so, you have to add the user to the
dockergroup. However, you must remember that having membership in this group is equal to having the
rootuser’s privileges. This may potentially lead to severe security-related issues. You can obtain more detailed information here.
Your service provider may provide additional tools to manage Docker registries. For example, Microsoft ships an az acr tool to manage the Microsoft Azure Container Registry, whereas Google provides you with a gcloud tool to manage the Google Container Registry. You can use these tools instead of the
logincommand to log in to the specific registries. Please consult your service provider’s documentation for more information.
Clone the Wallarm NGINX Ingress Plus repository by executing the following command:
git clone https://github.com/wallarm/ingress-plus/
Change your working directory to the
ingress-plus/by executing the following command:
Copy the NGINX Plus key and certificate files in the working directory. If you do not have the files, you have to obtain an NGINX Plus license. An
scputility or similar tool could be used to perform the copy operation.
Make sure that you have copied all necessary files by executing the following command:
You should be provided with the following output:
Initiate the building process by executing the following commands one by one:
make clean make DOCKERFILE=DockerfileForPlus PREFIX=<the path to your Docker repository>
Note that you should provide the path to your Docker repository as the value of the
PREFIXargument in the
makecommand. A Docker image will be pushed to that repository when the build process is complete.
To publish the image to the private repository
example-repository, created by user
johnand hosted on Docker Hub, provide the following
PREFIXargument to the
make DOCKERFILE=DockerfileForPlus PREFIX=docker.io/john/example-repository
You can start deployment of the Ingress controller once the build process finishes.