Skip to content

Commit d7e499c

Browse files
ADubhlaoichvepatel
andauthored
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]>
1 parent a2badff commit d7e499c

File tree

8 files changed

+231
-109
lines changed

8 files changed

+231
-109
lines changed

docs/content/community.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
---
22
docs: DOCS-1447
3-
title: Community and Contribution
3+
title: Community and contributing
44
toc: true
55
weight: 2200
66
---
77

8-
There are a few ways to get involved with the NGINX Ingress Controller community and contribute to the project.
8+
There are a few ways to get involved with the F5 NGINX Ingress Controller community and contribute to the project.
99

1010
# Community
1111

docs/content/glossary.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ title: Glossary
55
weight: 10000
66
---
77

8+
This is a glossary of terms related to F5 NGINX Ingress Controller and Kubernetes as a whole.
9+
10+
---
11+
812
## Ingress {#ingress}
913

1014
_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:
1721

1822
For additional information, please read the official [Kubernetes Ingress Documentation](https://kubernetes.io/docs/concepts/services-networking/ingress/).
1923

24+
---
25+
2026
## Ingress Controller {#ingress-controller}
2127

2228
*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.
2329

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.

docs/content/overview/about.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,10 @@ weight: 100
88

99
This document describes the F5 NGINX Ingress Controller, an Ingress Controller implementation for NGINX and NGINX Plus.
1010

11+
---
12+
1113
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.
1214

1315
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">}}).
1416

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.

docs/content/overview/design.md

Lines changed: 50 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
docs: DOCS-609
33
doctypes:
44
- reference
5-
title: How NGINX Ingress Controller is Designed
5+
title: The design of NGINX Ingress Controller
66
toc: true
77
weight: 200
88
---
@@ -18,7 +18,9 @@ We assume that the reader is familiar with core Kubernetes concepts, such as Pod
1818

1919
For conciseness in diagrams, NGINX Ingress Controller is often labelled "IC" on this page.
2020

21-
## NGINX Ingress Controller at a High Level
21+
---
22+
23+
## NGINX Ingress Controller at a high level
2224

2325
This figure depicts an example of NGINX Ingress Controller exposing two web applications within a Kubernetes cluster to clients on the internet:
2426

@@ -38,7 +40,9 @@ The figure shows:
3840

3941
The yellow and purple arrows represent connections related to the client traffic, and the black arrows represent access to the Kubernetes API.
4042

41-
## The NGINX Ingress Controller Pod
43+
---
44+
45+
## The NGINX Ingress Controller pod
4246

4347
The NGINX Ingress Controller pod consists of a single container, which includes the following:
4448

@@ -52,7 +56,6 @@ The following is an architectural diagram depicting how those processes interact
5256

5357
This table describes each connection, starting with its type:
5458

55-
5659
{{< bootstrap-table "table table-bordered table-striped table-responsive" >}}
5760
| # | Protocols | Description |
5861
| --- | --- | --- |
@@ -79,6 +82,8 @@ This table describes each connection, starting with its type:
7982
|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`.
8083
{{% /bootstrap-table %}}
8184

85+
---
86+
8287
### Differences with NGINX Plus
8388

8489
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
8792
- Instead of the stub status metrics, the extended metrics available from the NGINX Plus API are used.
8893
- 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.
8994

90-
## The NGINX Ingress Controller Process
95+
---
96+
97+
## The NGINX Ingress Controller process
9198

9299
This section covers the architecture of the NGINX Ingress Controller process, including:
93100

94101
- How NGINX Ingress Controller processes a new Ingress resource created by a user.
95102
- A summary of how NGINX Ingress Controller works in relation to others Kubernetes Controllers.
96103
- The different components of the IC process.
97104

98-
### Processing a New Ingress Resource
105+
---
106+
107+
### Processing a new Ingress resource
99108

100109
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.
101110

@@ -114,7 +123,9 @@ Processing a new Ingress resource involves the following steps: each step corres
114123
1. _NGINX_ reads the _configuration files_.
115124
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.
116125

117-
### NGINX Ingress Controller is a Kubernetes Controller
126+
---
127+
128+
### NGINX Ingress Controller is a Kubernetes controller
118129

119130
With the context from the previous sections, we can generalize how NGINX Ingress Controller works:
120131

@@ -147,7 +158,9 @@ NGINX Ingress Controller can watch additional Custom Resources, which are less c
147158
- [NGINX App Protect resources]({{< relref "installation/integrations/app-protect-dos/configuration" >}}) (APPolicies, APLogConfs, APUserSigs)
148159
- IngressLink resource (only one resource)
149160

150-
## NGINX Ingress Controller Process Components
161+
---
162+
163+
## NGINX Ingress Controller process components
151164

152165
In this section, we describe the components of the NGINX Ingress Controller process and how they interact, including:
153166

@@ -158,7 +171,7 @@ In this section, we describe the components of the NGINX Ingress Controller proc
158171

159172
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.
160173

161-
### Resource Caches
174+
### Resource caches
162175

163176
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.
164177

@@ -172,7 +185,9 @@ We also mentioned that once the cache is updated, it notifies the control loop a
172185
- 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_).
173186
- 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_).
174187

175-
### The Control Loop
188+
---
189+
190+
### The control loop
176191

177192
This section discusses the main components of NGINX Ingress Controller, which comprise the control loop:
178193

@@ -192,7 +207,9 @@ The following diagram shows how the three components interact:
192207

193208
{{<img src="img/control-loop.png" alt="">}}
194209

195-
#### The Controller Sync Method
210+
---
211+
212+
#### The Controller sync method
196213

197214
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).
198215

@@ -213,16 +230,20 @@ To explain how the sync methods work, we will examine the most important one: th
213230
1. The reload status is propagated from _Manager_ to _processChanges_, and is either a success or a failure with an error message.
214231
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.
215232

216-
**Additional Notes**:
233+
**Additional notes**:
217234

218235
- Many details are not included for conciseness: the source code provides the most granular detail.
219236
- 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.
220237
- 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.
221238

222-
#### Helper Components
239+
---
240+
241+
#### Helper components
223242

224243
There are two additional helper components crucial for processing changes: _Configuration_ and _LocalSecretStore_.
225244

245+
---
246+
226247
##### Configuration
227248

228249
[_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
238259

239260
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.
240261

262+
---
263+
241264
##### LocalSecretStore
242265

243266
[_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`).
244267

245268
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).
246269

270+
---
271+
247272
## Reloading NGINX
248273

249274
The following sections describe how NGINX reloads and how NGINX Ingress Controller specifically affects this process.
250275

276+
---
277+
251278
### How NGINX reloads work
252279

253280
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
257284
1. The administrator verifies the reload has successfully finished.
258285

259286
The [NGINX documentation](https://nginx.org/en/docs/control.html#reconfiguration) has more details about reloading.
287+
288+
---
289+
260290
#### How to reload NGINX and confirm success
261291

262292
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
273303

274304
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.
275305

306+
---
307+
276308
#### Potential problems
277309

278310
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.
285317
286318
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.
287319
320+
---
321+
288322
### Reloading in NGINX Ingress Controller
289323
290324
NGINX Ingress Controller reloads NGINX to apply configuration changes.
@@ -301,7 +335,9 @@ Reloads occur with this sequence of steps:
301335
302336
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.
303337
304-
### When NGINX Ingress Controller Reloads NGINX
338+
---
339+
340+
### When NGINX Ingress Controller reloads NGINX
305341
306342
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.
307343

docs/content/overview/nginx-plus.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,12 @@ title: Extensibility with NGINX Plus
66
weight: 300
77
---
88

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.
1010

1111
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.
1212

13+
---
14+
1315
## Additional features
1416

1517
- _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
2022

2123
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.
2224

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 >}}
2426

2527
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.
2628

29+
---
30+
2731
## Dynamic reconfiguration
2832

2933
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.

docs/content/overview/product-telemetry.md

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,24 @@
11
---
2-
title: Product Telemetry
2+
title: Product telemetry
33
toc: true
44
weight: 500
55
---
66

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+
---
810

911
## Overview
1012

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.
1314

1415
Product telemetry is enabled by default, collected once every 24 hours. It's then sent to a service managed by F5 over HTTPS.
1516

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+
---
1920

20-
## Data Collected
21+
## Data collected
2122

2223
These are the data points collected and reported by NGINX Ingress Controller:
2324

@@ -56,20 +57,24 @@ These are the data points collected and reported by NGINX Ingress Controller:
5657
- **IsPlus** Represents whether NGINX is Plus or OSS
5758
- **InstallationFlags** List of command line arguments configured for NGINX Ingress Controller
5859

60+
---
61+
5962
## Opt out
6063

6164
Product telemetry can be disabled when installing NGINX Ingress Controller.
6265

6366
### Helm
6467

68+
When installing or upgrading NGINX Ingress Controller with Helm, set the `controller.telemetry.enable` option to `false`.
6569

66-
When installing or upgrading NGINX Ingress Controller with Helm, set the `controller.telemetry.enable` option to `false`
6770
This can be set directly in the `values.yaml` file, or using the `--set` option
6871

6972
```shell
7073
helm upgrade --install ... --set controller.telemetry.enable=false
7174
```
7275

76+
---
77+
7378
### Manifests
7479

7580
When installing NGINX Ingress Controller with Manifests, set the `-enable-telemetry-reporting` flag to `false`

0 commit comments

Comments
 (0)