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
Update top level documentation pages for style consistency (nginx#5754)
This commit changes the top level pages of documentation
to adhere with newer style guide conventions.
* Horizontal rules at the end of sections
* Sentence case for page titles and headings
* Note formatting
* Link introduction phrasing
Co-authored-by: Venktesh Shivam Patel <[email protected]>
Copy file name to clipboardExpand all lines: docs/content/glossary.md
+7-1Lines changed: 7 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,6 +5,10 @@ title: Glossary
5
5
weight: 10000
6
6
---
7
7
8
+
This is a glossary of terms related to F5 NGINX Ingress Controller and Kubernetes as a whole.
9
+
10
+
---
11
+
8
12
## Ingress {#ingress}
9
13
10
14
_Ingress_ refers to an _Ingress Resource_, a Kubernetes API object which allows access to [Services](https://kubernetes.io/docs/concepts/services-networking/service/) within a cluster. They are managed by an [Ingress Controller]({{< relref "glossary.md#ingress-controller">}}).
@@ -17,8 +21,10 @@ _Ingress_ resources enable the following functionality:
17
21
18
22
For additional information, please read the official [Kubernetes Ingress Documentation](https://kubernetes.io/docs/concepts/services-networking/ingress/).
19
23
24
+
---
25
+
20
26
## Ingress Controller {#ingress-controller}
21
27
22
28
*Ingress Controllers* are applications within a Kubernetes cluster that enable [Ingress]({{< relref "glossary.md#ingress">}}) resources to function. They are not automatically deployed with a Kubernetes cluster, and can vary in implementation based on intended use, such as load balancing algorithms for Ingress resources.
23
29
24
-
[How NGINX Ingress Controller is Designed]({{< relref "overview/design">}}) explains the technical details of the F5 NGINX Ingress Controller.
30
+
[The design of NGINX Ingress Controller]({{< relref "overview/design.md">}}) explains the technical details of NGINX Ingress Controller.
Copy file name to clipboardExpand all lines: docs/content/overview/about.md
+3-2Lines changed: 3 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,9 +8,10 @@ weight: 100
8
8
9
9
This document describes the F5 NGINX Ingress Controller, an Ingress Controller implementation for NGINX and NGINX Plus.
10
10
11
+
---
12
+
11
13
NGINX Ingress Controller is an [Ingress Controller]({{< relref "glossary.md#ingress-controller">}}) implementation for NGINX and NGINX Plus that can load balance Websocket, gRPC, TCP and UDP applications. It supports standard [Ingress]({{< relref "glossary.md#ingress">}}) features such as content-based routing and TLS/SSL termination. Several NGINX and NGINX Plus features are available as extensions to Ingress resources through [Annotations]({{< relref "configuration/ingress-resources/advanced-configuration-with-annotations">}}) and the [ConfigMap]({{< relref "configuration/global-configuration/configmap-resource">}}) resource.
12
14
13
15
NGINX Ingress Controller supports the [VirtualServer and VirtualServerRoute resources]({{< relref "configuration/virtualserver-and-virtualserverroute-resources">}}) as alternatives to Ingress, enabling traffic splitting and advanced content-based routing. It also supports TCP, UDP and TLS Passthrough load balancing using [TransportServer resources]({{< relref "configuration/transportserver-resource">}}).
14
16
15
-
To learn more about NGINX Ingress Controller, please read the [How NGINX Ingress Controller is Designed
16
-
]({{< relref "overview/design">}}) and [Extensibility with NGINX Plus]({{< relref "overview/nginx-plus">}}) pages.
17
+
To learn more about NGINX Ingress Controller, please read the [The design of NGINX Ingress Controller]({{< relref "overview/design.nd">}}) and [Extensibility with NGINX Plus]({{< relref "overview/nginx-plus.md">}}) topics.
@@ -79,6 +82,8 @@ This table describes each connection, starting with its type:
79
82
|21|HTTP| _Admin_ can connect to the [NGINX stub_status](http://nginx.org/en/docs/http/ngx_http_stub_status_module.html#stub_status) using port 8080 via an _NGINX worker_. By default, NGINX only allows connections from `localhost`.
80
83
{{% /bootstrap-table %}}
81
84
85
+
---
86
+
82
87
### Differences with NGINX Plus
83
88
84
89
The previous diagram depicts NGINX Ingress Controller using NGINX. NGINX Ingress Controller with NGINX Plus has the following differences:
@@ -87,15 +92,19 @@ The previous diagram depicts NGINX Ingress Controller using NGINX. NGINX Ingress
87
92
- Instead of the stub status metrics, the extended metrics available from the NGINX Plus API are used.
88
93
- In addition to TLS certs and keys, NGINX Ingress Controllerf writes JWKs from the secrets of the type `nginx.org/jwk`, and NGINX workers read them.
89
94
90
-
## The NGINX Ingress Controller Process
95
+
---
96
+
97
+
## The NGINX Ingress Controller process
91
98
92
99
This section covers the architecture of the NGINX Ingress Controller process, including:
93
100
94
101
- How NGINX Ingress Controller processes a new Ingress resource created by a user.
95
102
- A summary of how NGINX Ingress Controller works in relation to others Kubernetes Controllers.
96
103
- The different components of the IC process.
97
104
98
-
### Processing a New Ingress Resource
105
+
---
106
+
107
+
### Processing a new Ingress resource
99
108
100
109
The following diagram depicts how NGINX Ingress Controller processes a new Ingress resource. The the NGINX master and worker processes are represented as a single rectangle, _NGINX_ for simplicity. VirtualServer and VirtualServerRoute resources are indicated similarly.
101
110
@@ -114,7 +123,9 @@ Processing a new Ingress resource involves the following steps: each step corres
114
123
1._NGINX_ reads the _configuration files_.
115
124
1. The _Control Loop_ emits an event for the Ingress resource and updates its status. If the reload fails, the event includes the error message.
116
125
117
-
### NGINX Ingress Controller is a Kubernetes Controller
126
+
---
127
+
128
+
### NGINX Ingress Controller is a Kubernetes controller
118
129
119
130
With the context from the previous sections, we can generalize how NGINX Ingress Controller works:
120
131
@@ -147,7 +158,9 @@ NGINX Ingress Controller can watch additional Custom Resources, which are less c
In this section, we describe the components of the NGINX Ingress Controller process and how they interact, including:
153
166
@@ -158,7 +171,7 @@ In this section, we describe the components of the NGINX Ingress Controller proc
158
171
159
172
NGINX Ingress Controller is written in [Go](https://golang.org/) and relies heavily on the [Go client for Kubernetes](https://github.com/kubernetes/client-go). Where relevant, we include links to the source code on GitHub.
160
173
161
-
### Resource Caches
174
+
### Resource caches
162
175
163
176
In an earlier section, [Processing a New Ingress Resource](#processing-a-new-ingress-resource), we mentioned that NGINX Ingress Controller has a cache of the resources in the cluster that stays in sync with the Kubernetes API by watching them for changes.
164
177
@@ -172,7 +185,9 @@ We also mentioned that once the cache is updated, it notifies the control loop a
172
185
- The _Workqueue_ always tries to drain itself: if there is an element at the front, the queue will remove the element and send it to the _Controller_ by calling a callback function (See the arrow _4. Send_).
173
186
- The _Controller_ is the primary component of NGINX Ingress Controller, which represents the _Control Loop_, explained in [The Control Loop](#the-control-loop) section. To process a workqueue element, the _Controller_ component gets the latest version of the resource from the _Store_ (See the arrow _5. Get_), reconfigures _NGINX_ according to the resource (See the arrow _6. Reconfigure*_, updates the resource status, and emits an event via the _Kubernetes API_ (See the arrow _7. Update status and emit event_).
174
187
175
-
### The Control Loop
188
+
---
189
+
190
+
### The control loop
176
191
177
192
This section discusses the main components of NGINX Ingress Controller, which comprise the control loop:
178
193
@@ -192,7 +207,9 @@ The following diagram shows how the three components interact:
192
207
193
208
{{<imgsrc="img/control-loop.png"alt="">}}
194
209
195
-
#### The Controller Sync Method
210
+
---
211
+
212
+
#### The Controller sync method
196
213
197
214
The Controller [sync](https://github.com/nginxinc/kubernetes-ingress/blob/v1.11.0/internal/k8s/controller.go#L663) method is called by the _Workqueue_ to process a change of a resource. The method determines the _kind_ of the resource and calls the appropriate _sync_ method (Such as _syncIngress_ for Ingress resources).
198
215
@@ -213,16 +230,20 @@ To explain how the sync methods work, we will examine the most important one: th
213
230
1. The reload status is propagated from _Manager_ to _processChanges_, and is either a success or a failure with an error message.
214
231
1._processChanges_ calls _updateRegularIngressStatusAndEvent_ to update the status of the Ingress resource and emit an event with the status of the reload: both make an API call to the Kubernetes API.
215
232
216
-
**Additional Notes**:
233
+
**Additional notes**:
217
234
218
235
- Many details are not included for conciseness: the source code provides the most granular detail.
219
236
- The _syncVirtualServer_, _syncVirtualServerRoute_, and _syncTransportServer_ methods are similar to _syncIngress_, while other sync methods are different. However, those methods typically find the affected Ingress, VirtualServer, and TransportServer resources and regenerate the configuration for them.
220
237
- The _Workqueue_ has only a single worker thread that calls the sync method synchronously, meaning the _Control Loop_ processes only one change at a time.
221
238
222
-
#### Helper Components
239
+
---
240
+
241
+
#### Helper components
223
242
224
243
There are two additional helper components crucial for processing changes: _Configuration_ and _LocalSecretStore_.
225
244
245
+
---
246
+
226
247
##### Configuration
227
248
228
249
[_Configuration_](https://github.com/nginxinc/kubernetes-ingress/blob/v1.11.0/internal/k8s/configuration.go#L320) holds the latest valid state of the NGINX Ingress Controller load balancing configuration resources: Ingresses, VirtualServers, VirtualServerRoutes, TransportServers, and GlobalConfiguration.
@@ -238,16 +259,22 @@ Additionally, the _Configuration_ ensures that only one Ingress/VirtualServer/Tr
238
259
239
260
Ultimately, NGINX Ingress Controller ensures the NGINX config on the filesystem reflects the state of the objects in the _Configuration_ at any point in time.
240
261
262
+
---
263
+
241
264
##### LocalSecretStore
242
265
243
266
[_LocalSecretStore_](https://github.com/nginxinc/kubernetes-ingress/blob/v1.11.0/internal/k8s/secrets/store.go#L32) (of the _SecretStore_ interface) holds the valid Secret resources and keeps the corresponding files on the filesystem in sync with them. Secrets are used to hold TLS certificates and keys (type `kubernetes.io/tls`), CAs (`nginx.org/ca`), JWKs (`nginx.org/jwk`), and client secrets for an OIDC provider (`nginx.org/oidc`).
244
267
245
268
When _Controller_ processes a change to a configuration resource like Ingress, it creates an extended version of a resource that includes the dependencies (Such as Secrets) necessary to generate the NGINX configuration. _LocalSecretStore_ allows _Controller_ to reference the filesystem for a secret using the secret key (namespace/name).
246
269
270
+
---
271
+
247
272
## Reloading NGINX
248
273
249
274
The following sections describe how NGINX reloads and how NGINX Ingress Controller specifically affects this process.
250
275
276
+
---
277
+
251
278
### How NGINX reloads work
252
279
253
280
Reloading NGINX is necessary to apply new configuration changes and occurs with these steps:
@@ -257,6 +284,9 @@ Reloading NGINX is necessary to apply new configuration changes and occurs with
257
284
1. The administrator verifies the reload has successfully finished.
258
285
259
286
The [NGINX documentation](https://nginx.org/en/docs/control.html#reconfiguration) has more details about reloading.
287
+
288
+
---
289
+
260
290
#### How to reload NGINX and confirm success
261
291
262
292
The NGINX binary (`nginx`) supports the reload operation with the `-s reload` option. When you run this option:
@@ -273,6 +303,8 @@ Once the reload operation has been invoked with `nginx -s reload`, there is no w
273
303
274
304
NGINX reloads take roughly 200ms. The factors affecting reload time are configuration size and details, the number of TLS certificates/keys, enabled modules, and available CPU resources.
275
305
306
+
---
307
+
276
308
#### Potential problems
277
309
278
310
Most of the time, if `nginx -s reload` executes, the reload will also succeed. In the rare case a reload fails, the NGINX master process will print the an error message. This is an example:
@@ -285,6 +317,8 @@ The operation is graceful; reloading doesn't lead to any traffic loss by NGINX.
285
317
286
318
Old NGINX workers will not shut down until all connections are terminated either by clients or backends, unless you configure [worker_shutdown_timeout](https://nginx.org/en/docs/ngx_core_module.html#worker_shutdown_timeout). Since both the old and new NGINX worker processes coexist during a reload, reloading can lead to two spikes in memory utilization. With a lack of available memory, the NGINX master process can fail to create new worker processes.
287
319
320
+
---
321
+
288
322
### Reloading in NGINX Ingress Controller
289
323
290
324
NGINX Ingress Controller reloads NGINX to apply configuration changes.
@@ -301,7 +335,9 @@ Reloads occur with this sequence of steps:
301
335
302
336
The [NGINX Ingress Controller Control Loop](#the-control-loop) stops during a reload so that it cannot affect configuration files or reload NGINX until the current reload succeeds or fails.
303
337
304
-
### When NGINX Ingress Controller Reloads NGINX
338
+
---
339
+
340
+
### When NGINX Ingress Controller reloads NGINX
305
341
306
342
NGINX Ingress Controller reloads NGINX every time the Control Loop processes a change that affects the generated NGINX configuration. In general, every time a monitored resource is changed, NGINX Ingress Controller will regenerate the configuration and reload NGINX.
Copy file name to clipboardExpand all lines: docs/content/overview/nginx-plus.md
+6-2Lines changed: 6 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,10 +6,12 @@ title: Extensibility with NGINX Plus
6
6
weight: 300
7
7
---
8
8
9
-
This document explains how F5 NGINX Plus can extend the functionality of the F5 NGINX Ingress Controller.
9
+
This document explains how F5 NGINX Plus can extend the functionality of F5 NGINX Ingress Controller.
10
10
11
11
NGINX Ingress Controller works with [NGINX](https://nginx.org/) as well as [NGINX Plus](https://www.nginx.com/products/nginx/), a commercial closed source version of NGINX which has additional features and support from NGINX Inc. NGINX Ingress Controller can leverage functionality from NGINX Plus to extend its base capabilities.
12
12
13
+
---
14
+
13
15
## Additional features
14
16
15
17
-_Real-time metrics_: Metrics for NGINX Plus and application performance are available through the API or the [NGINX Status Page]({{< relref "logging-and-monitoring/status-page">}}). These metrics can also be exported to [Prometheus]({{< relref "logging-and-monitoring/prometheus">}}).
@@ -20,10 +22,12 @@ NGINX Ingress Controller works with [NGINX](https://nginx.org/) as well as [NGIN
20
22
21
23
For a comprehensive guide of NGINX Plus features available with Ingress resources, see the [ConfigMap]({{< relref "configuration/global-configuration/configmap-resource">}}) and [Annotations]({{< relref "configuration/ingress-resources/advanced-configuration-with-annotations">}}) documentation.
22
24
23
-
{{< note >}}NGINX Plus features are configured for Ingress resources using Annotations that start with `nginx.com`.{{< /note >}}
25
+
{{< note >}}NGINX Plus features are configured for Ingress resources using Annotations that start with `nginx.com`.{{< /note >}}
24
26
25
27
For a comprehensive guide of NGINX Plus features available with custom resources, see the [Policy]({{< relref "configuration/policy-resource" >}}), [VirtualServer]({{< relref "configuration/virtualserver-and-virtualserverroute-resources" >}}) and [TransportServer]({{< relref "configuration/transportserver-resource" >}}) documentation.
26
28
29
+
---
30
+
27
31
## Dynamic reconfiguration
28
32
29
33
NGINX Ingress Controller updates the configuration of the load balancer to reflect changes every time the number of pods exposed through an Ingress resource changes. When using NGINX, the configuration file must be changed then reloaded.
Copy file name to clipboardExpand all lines: docs/content/overview/product-telemetry.md
+14-9Lines changed: 14 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,23 +1,24 @@
1
1
---
2
-
title: Product Telemetry
2
+
title: Product telemetry
3
3
toc: true
4
4
weight: 500
5
5
---
6
6
7
-
Learn why NGINX Ingress Controller collects telemetry, and understand how and what it gathers.
7
+
Learn why, what and how F5 NGINX Ingress Controller collects telemetry.
8
+
9
+
---
8
10
9
11
## Overview
10
12
11
-
NGINX Ingress Controller collects product telemetry data to allow its developers to understand how it's deployed and configured by users.
12
-
This data is used to triage development work, prioritizing features and functionality that will benefit the most people.
13
+
NGINX Ingress Controller collects product telemetry data to allow its developers to understand how it's deployed and configured by users. This data is used to triage development work, prioritizing features and functionality that will benefit the most people.
13
14
14
15
Product telemetry is enabled by default, collected once every 24 hours. It's then sent to a service managed by F5 over HTTPS.
15
16
16
-
{{< note >}}
17
-
If you would prefer to avoid sending any telemetry data, you can [opt-out](#opt-out) when installing NGINX Ingress Controller.
18
-
{{< /note >}}
17
+
{{< note >}} If you would prefer not to send any telemetry data, you can [opt-out](#opt-out) when installing NGINX Ingress Controller. {{< /note >}}
18
+
19
+
---
19
20
20
-
## Data Collected
21
+
## Data collected
21
22
22
23
These are the data points collected and reported by NGINX Ingress Controller:
23
24
@@ -56,20 +57,24 @@ These are the data points collected and reported by NGINX Ingress Controller:
56
57
-**IsPlus** Represents whether NGINX is Plus or OSS
57
58
-**InstallationFlags** List of command line arguments configured for NGINX Ingress Controller
58
59
60
+
---
61
+
59
62
## Opt out
60
63
61
64
Product telemetry can be disabled when installing NGINX Ingress Controller.
62
65
63
66
### Helm
64
67
68
+
When installing or upgrading NGINX Ingress Controller with Helm, set the `controller.telemetry.enable` option to `false`.
65
69
66
-
When installing or upgrading NGINX Ingress Controller with Helm, set the `controller.telemetry.enable` option to `false`
67
70
This can be set directly in the `values.yaml` file, or using the `--set` option
0 commit comments