You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+24-16Lines changed: 24 additions & 16 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,11 +4,11 @@ This repo provides implementations of an Ingress controller for NGINX and NGINX
4
4
5
5
## What is Ingress?
6
6
7
-
An Ingress is a Kubernetes resource that lets you configure an HTTP load balancer for your Kubernetes services. Such a load balancer usually exposes your services to the clients outside of your Kubernetes cluster. An Ingress resource supports:
7
+
An Ingress is a Kubernetes resource that lets you configure an HTTP load balancer for your Kubernetes services. Such a load balancer usually exposes your services to clients outside of your Kubernetes cluster. An Ingress resource supports:
8
8
* Exposing services:
9
9
* Via custom URLs (for example, service A at the URL `/serviceA` and service B at the URL `/serviceB`).
10
10
* Via multiple host names (for example, `foo.example.com` for one group of services and `bar.example.com` for another group).
11
-
* Configuring SSL termination per each exposed host name.
11
+
* Configuring SSL termination for each exposed host name.
12
12
13
13
See the [Ingress User Guide](http://kubernetes.io/docs/user-guide/ingress/) to learn more.
14
14
@@ -25,41 +25,49 @@ We provide Ingress controllers for NGINX and NGINX Plus that support the followi
25
25
* Path-based rules
26
26
* Multiple host names
27
27
28
-
Additionally, we provide a mechanism to customize the NGINX configuration.
28
+
We provide the following extensions to our Ingress controllers:
29
+
*[Websocket](examples/websocket), which allows you to load balance Websocket applications.
30
+
*[SSL Services](examples/ssl-services), which allows you to load balance HTTPS applications.
31
+
*[Rewrites](examples/rewrites), which allows you to rewrite the URI of a request before sending it to the application.
32
+
*[Session Persistence](examples/session-persistence) (NGINX Plus only), which guarantees that all the requests from the same client are always passed to the same backend container.
29
33
30
-
Refer to the [examples folder](examples) to find out how to [deploy](examples/complete-example) NGINX Ingress Controllers and [customize](examples/customization) the NGINX configuration.
34
+
Additionally, we provide a mechanism to customize the NGINX configuration. Refer to the [examples folder](examples) to find out how to [deploy](examples/complete-example) NGINX Ingress controllers and [customize](examples/customization) the NGINX configuration.
31
35
32
-
## Difference between NGINX and NGINX Plus controllers
36
+
## Difference between NGINX and NGINX Plus Controllers
33
37
34
38
[NGINX Plus](https://www.nginx.com/products/) is a commercial version of NGINX that comes with advanced features and support.
35
39
36
-
Deployment of the NGINX Plus Ingress Controller requires you to do one extra step: build your own [Docker image](nginx-plus-controller) using the certificate and key of your license.
40
+
Deployment of the NGINX Plus Ingress controller requires you to do one extra step: build your own [Docker image](nginx-plus-controller) using the certificate and key for your subscription.
37
41
The Docker image of the NGINX Ingress controller is [available on Docker Hub](https://hub.docker.com/r/nginxdemos/nginx-ingress/).
38
42
39
-
The NGINX Plus Ingress Controller leverages the advanced features of NGINX Plus, which gives you the following additional benefits:
43
+
The NGINX Plus Ingress controller leverages the advanced features of NGINX Plus, which gives you the following additional benefits:
40
44
41
-
***Reduced Number of Configuration Reloads**
42
-
Every time the number of pods of services you expose via Ingress changes, the Ingress controller updates the configuration of NGINX to reflect those changes. For open source NGINX software, the configuration file must be changed followed by the configuration reload. For NGINX Plus, we use the [on-the-fly reconfiguration](https://www.nginx.com/products/on-the-fly-reconfiguration/) feature, which allows you to update NGINX Plus on-the-fly without reloading the configuration. This prevents a potential increase of memory usage and overall system overloading, which could occur with frequent configuration reloads.
43
-
***Real-time Statistics**
45
+
***Reduced number of configuration reloads**
46
+
Every time the number of pods of services you expose via Ingress changes, the Ingress controller updates the configuration of NGINX to reflect those changes. For the open source NGINX software, the configuration file must be changed and the configuration reloaded. For NGINX Plus, the [on-the-fly reconfiguration](https://www.nginx.com/products/on-the-fly-reconfiguration/) feature is utilized, which allows NGINX Plus to be updated on-the-fly without reloading the configuration. This prevents a potential increase of memory usage and overall system overloading, which could occur with too frequent configuration reloads.
47
+
***Real-time statistics**
44
48
NGINX Plus provides you with [advanced statistics](https://www.nginx.com/products/live-activity-monitoring/), which you can access either through the API or via the built-in dashboard. This can give you insights into how NGINX Plus and your applications are performing.
45
-
***Session Persistence** When enabled, NGINX Plus makes sure that all the requests from the same client are always passed to the same backend container using the *sticky cookie* method. Refer to the [session persistence examples](examples/session-persistence) to find out how to configure it.
49
+
***Session persistence** When enabled, NGINX Plus makes sure that all the requests from the same client are always passed to the same backend container using the *sticky cookie* method. Refer to the [session persistence examples](examples/session-persistence) to find out how to configure it.
46
50
47
51
## Using Multiple Ingress Controllers
48
52
49
53
You can run multiple Ingress controllers at the same time. For example, if your Kubernetes cluster is deployed in cloud, you can run the NGINX controller and the corresponding cloud HTTP load balancing controller. Refer to the [example](examples/multiple-ingress-controllers) to learn more.
50
54
51
-
## Advanced load balancing (beyond Ingress)
55
+
## Advanced Load Balancing (Beyond Ingress)
52
56
53
57
When your requirements go beyond what Ingress offers, you can use NGINX and
54
58
NGINX Plus without the Ingress Controller.
55
59
56
60
NGINX Plus comes with a [DNS-based dynamic reconfiguration feature](https://www.nginx.com/blog/dns-service-discovery-nginx-plus/), which lets you keep the list of the endpoints of your services in sync with NGINX Plus. Read more about how to setup NGINX Plus this way in [Load Balancing Kubernetes Services with NGINX Plus](https://www.nginx.com/blog/load-balancing-kubernetes-services-nginx-plus/).
57
61
58
-
## Production status
62
+
## Production Status
59
63
60
-
The status of the NGINX Ingress controllers is currently experimental.
64
+
This is the preview version of the Ingress controllers.
65
+
66
+
## Support
67
+
68
+
Support from the [NGINX Professional Services Team](https://www.nginx.com/services/) is available when using the NGINX Plus Ingress controller.
61
69
62
70
## Contacts
63
71
64
-
We’d like to hear your feedback! If you have any suggestions or experience issues with our Ingress Controllers, please create an issue or send a pull request on Github.
We’d like to hear your feedback! If you have any suggestions or experience issues with our Ingress controllers, please create an issue or send a pull request on Github.
Copy file name to clipboardExpand all lines: examples/rewrites/README.md
+15-12Lines changed: 15 additions & 12 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,11 +1,17 @@
1
1
# Rewrites Support
2
2
3
-
To load balance an application that requires rewrites with NGINX Ingress controllers, you need to add the **nginx.org/rewrites** annotation to your Ingress resource definition. The annotation specifies which services need rewrites. The annotation syntax is as follows:
3
+
You can configure NGINX to rewrite the URI of a request before sending it to the application. For example, `/tea/green` can be rewritten to `/green`.
4
+
5
+
## Syntax
6
+
7
+
To configure URI rewriting you need to add the **nginx.org/rewrites** annotation to your Ingress resource definition. The annotation syntax is as follows:
Copy file name to clipboardExpand all lines: nginx-controller/README.md
+5-4Lines changed: 5 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -27,17 +27,18 @@ We build the image using the make utility. The **Makefile** we provide has the f
27
27
28
28
The **Makefile** contains the following main variables, which you should customize (either by changing the Makefile or by overriding the variables in the make command):
29
29
***PREFIX** -- the name of the image. For example, `nginx-ingress`
30
-
***TAG** -- the tag added to the image. For example, `0.3`
31
-
***PUSH_TO_GCR** . If you’re running your Kubernetes in GCE and using Google Container Registry, make sure that `PUSH_TO_GCR = 1`. This means using the `gcloud docker push` command to push the image, which is convenient when pushing images to GCR. By default, the variable is unset and the regular `docker push` command is used to push the image to the registry.
30
+
***VERSION** -- the current version of the controller.
31
+
***TAG** -- the tag added to the image. It's set to the value of the `VERSION` variable by default.
32
+
***PUSH_TO_GCR**. If you’re running your Kubernetes in GCE and using Google Container Registry, make sure that `PUSH_TO_GCR = 1`. This means using the `gcloud docker push` command to push the image, which is convenient when pushing images to GCR. By default, the variable is unset and the regular `docker push` command is used to push the image to the registry.
32
33
33
34
Let’s create the controller binary, build an image and push the image to the private registry. Make sure to run the `docker login` command first to login to the registry. If you’re using Google Container Registry, as we are in our example here, you don’t need to use the docker command to login. However, make sure you’re logged into the gcloud tool (using the `gcloud auth login` command).
34
35
35
36
In this folder we run the following commands in the shell:
36
37
```
37
38
$ make clean
38
-
$ make PREFIX=gcr.io/my-k8s-project/nginx-ingress TAG=0.3 PUSH_TO_GCR=1
39
+
$ make PREFIX=gcr.io/my-k8s-project/nginx-ingress TAG=latest PUSH_TO_GCR=1
39
40
```
40
41
41
-
Where **my-k8s-project** is the name of the GCE project where we run our Kubernetes cluster. As the result, the image -- **gcr.io/my-k8s-project/nginx-ingress:0.3** -- is built and pushed to the registry.
42
+
Where **my-k8s-project** is the name of the GCE project where we run our Kubernetes cluster. As the result, the image -- **gcr.io/my-k8s-project/nginx-ingress:latest** -- is built and pushed to the registry.
42
43
43
44
By default, to compile the controller we use the [golang](https://hub.docker.com/_/golang/) container that we run as part of the building process. If you want to compile the controller using your local golang environment, specify `BUILD_IN_CONTAINER=0` when you run the make command.
Copy file name to clipboardExpand all lines: nginx-plus-controller/README.md
+4-3Lines changed: 4 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -25,17 +25,18 @@ We build the image using the make utility. The **Makefile** we provide has the f
25
25
26
26
The **Makefile** contains the following main variables, which you should customize (either by changing the Makefile or by overriding the variables in the make command):
27
27
***PREFIX** -- the name of the image. For example, `nginx-plus-ingress`
28
-
***TAG** -- the tag added to the image. For example, `0.3`
28
+
***VERSION** -- the current version of the controller.
29
+
***TAG** -- the tag added to the image. It's set to the value of the `VERSION` variable by default.
29
30
***PUSH_TO_GCR** . If you’re running your Kubernetes in GCE and using Google Container Registry, make sure that `PUSH_TO_GCR = 1`. This means using the `gcloud docker push` command to push the image, which is convenient when pushing images to GCR. By default, the variable is unset and the regular `docker push` command is used to push the image to the registry.
30
31
31
32
Let’s create the controller binary, build an image and push the image to the private registry. Make sure to run the `docker login` command first to login to the registry. If you’re using Google Container Registry, as we are in our example here, you don’t need to use the docker command to login. However, make sure you’re logged into the gcloud tool (using the `gcloud auth login` command).
32
33
33
34
In this folder we run the following commands in the shell:
34
35
```
35
36
$ make clean
36
-
$ make PREFIX=gcr.io/my-k8s-project/nginx-plus-ingress TAG=0.3 PUSH_TO_GCR=1
37
+
$ make PREFIX=gcr.io/my-k8s-project/nginx-plus-ingress TAG=latest PUSH_TO_GCR=1
37
38
```
38
39
39
-
Where **my-k8s-project** is the name of the GCE project where we run our Kubernetes cluster. As the result, the image -- **gcr.io/my-k8s-project/nginx-plus-ingress:0.3** -- is built and pushed to the registry.
40
+
Where **my-k8s-project** is the name of the GCE project where we run our Kubernetes cluster. As the result, the image -- **gcr.io/my-k8s-project/nginx-plus-ingress:latest** -- is built and pushed to the registry.
40
41
41
42
By default, to compile the controller we use the [golang](https://hub.docker.com/_/golang/) container that we run as part of the building process. If you want to compile the controller using your local golang environment, specify `BUILD_IN_CONTAINER=0` when you run the make command.
0 commit comments