Skip to content

Commit ec6ac4f

Browse files
chrisakkersdutta9
andauthored
Updated Install Guides (#49)
* added http docs * updated http docs * added Grafana * change to NGINX * add prometheus * add loadbalancer files * add loadbalancer files * add loadbalancer files * update install guides * update install guides * update install guides * update install guides * tcp update * added step numbers * added numbering * new blog diagram --------- Co-authored-by: Shouvik <[email protected]>
1 parent 4a04118 commit ec6ac4f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

65 files changed

+2018
-918
lines changed

DESIGN.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,3 +107,7 @@ having defaults set to a base of 2 seconds, and a maximum of 60 seconds.
107107

108108
The Synchronizer uses a jitter mechanism to avoid thrashing the NGINX Plus hosts. Each `core.ServerUpdateEvent` instance
109109
is added to the "nkl-synchronizer" queue with a random jitter value between 250 and 750 milliseconds.
110+
111+
## Authors
112+
- Steve Wagner - Solutions Architect - Community and Alliances @ F5, Inc.
113+
- Chris Akker - Solutions Architect - Community and Alliances @ F5, Inc.

README.md

Lines changed: 57 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,95 @@
11
# nginx-k8s-loadbalancer
22

3-
## Welcome to the Nginx Kubernetes Load Balancer project !
4-
53
<br/>
64

7-
This repo contains source code and documents for a new Kubernetes Controller, that provides TCP load balancing external to a Kubernetes Cluster running On Premises.
5+
# Welcome to the Nginx Kubernetes Load Balancer Solution!
86

97
<br/>
108

11-
>>**This is a replacement for a Cloud Providers "Service Type Loadbalancer", that is missing from On Premises Kubernetes Clusters.**
9+
![Nginx K8s LB](docs/media/nkl-logo.png) | ![Nginx K8s LB](docs/media/nginx-2020.png)
10+
--- | ---
1211

1312
<br/>
1413

15-
## Overview
14+
This repo contains source code and documents for a new `Kubernetes Controller from Nginx`, that provides TCP and HTTP load balancing external to a Kubernetes Cluster running On Premises.
15+
16+
<br/>
1617

17-
- Create a new K8s Controller, that will monitor specified k8s Services, and then send API calls to an external Nginx Plus server to manage Nginx Upstream servers automatically.
18-
- This will `synchronize` the K8s Service Endpoint list, with the Nginx LB server's Upstream server list.
19-
- The primary use case is for tracking the NodePort IP:Port definitions for the Nginx Ingress Controller's `nginx-ingress Service`.
20-
- With the Nginx Plus Server located external to the K8s cluster, this new controller LB function would provide an alternative TCP "Load Balancer Service" for On Premises K8s clusters, which do not have access to a Cloud providers "Service Type LoadBalancer".
21-
- Make the solution a native Kubernetes Component, running, configured and managed with standard K8s commands.
18+
>>**This is a replacement for a Cloud Providers `Service Type Loadbalancer`, that is not available for On Premises Kubernetes Clusters.**
2219
2320
<br/>
21+
<br/>
22+
2423

25-
## Reference Diagram
24+
# Overview
25+
26+
- `NKL - Nginx Kubernetes Loadbalancer` is a new K8s Controller from Nginx, that monitors specified K8s Services, and then sends API calls to an external Nginx Plus server to manage Nginx Upstream servers dynamically.
27+
- This will `synchronize` the K8s Service Endpoint list, with the Nginx LB Server's upstream list.
28+
- The primary use case and Solution provided is for tracking the K8s` NodePort` IP:Port definitions for the Nginx Ingress Controller's `nginx-ingress Service`.
29+
- NKL is a native Kubernetes Controller, running, configured and managed with standard K8s commands.
30+
- NKL paired with the Nginx Plus Server located external to the K8s cluster, this new controller LB function will provide a `TCP Load Balancer Service` for On Premises K8s clusters, which do not have access to a Cloud providers "Service Type LoadBalancer".
31+
- NKL paired with the Nginx Plus Server located external to the Cluster, using Nginx's advanced HTTP features, provide an `HTTP Load Balancer Service` for Enterprise traffic management solutions, such as:
32+
- MultiCluster Active/Active Load Balancing
33+
- Horizontal Cluster Scaling
34+
- HTTP Split Clients - for A/B, Blue/Green, and Canary test and production traffic steering. Allows Cluster operations/maintainence like upgrades, patching, expansion and troubleshooting with no downtime or reloads
35+
- Advanced TLS Processing - MutualTLS, OCSP, FIPS, dynamic cert loading
36+
- Advanced Security features - Oauth, JWT, App Protect WAF Firewall, Rate and Bandwidth limits
37+
- Nginx Java Script (NJS) for custom solutions
38+
- Nginx Zone Sync of KeyVal data
2639

2740
<br/>
2841

29-
![NGINX LB Server](docs/media/nginxlb-nklv2.png)
42+
## NKL Controller Software Design Overview - How it works
43+
44+
[NKL Controller DESIGN and Architecture](DESIGN.md)
3045

3146
<br/>
3247

33-
## Sample Screenshots of Runtime
48+
## Reference Diagram for NKL TCP Load Balancer Service
3449

3550
<br/>
3651

37-
### Configuration with 2 Nginx LB Servers defined (HA):
52+
![NKL Stream Diagram](docs/media/nkl-stream-diagram.png)
3853

39-
![NGINX LB ConfigMap](docs/media/nkl-pod-configmap.png)
54+
<br/>
55+
56+
## Sample Screenshots of Solution at Runtime
4057

4158
<br/>
4259

43-
### Nginx LB Server Dashboard and Logging
60+
![NGINX LB ConfigMap](docs/media/nkl-configmap.png)
61+
### ConfigMap with 2 Nginx LB Servers defined for HA
62+
63+
<br/>
4464

45-
![NGINX LB Create Nodeport](docs/media/nkl-create-nodeport.png)
65+
![NGINX LB Create Nodeport](docs/media/nkl-stream-create-nodeport.png)
66+
### Nginx LB Server Dashboard, NodePort, and NKL Controller Logging
4667

47-
Legend:
48-
- Red - kubectl commands
68+
### Legend:
69+
- Red - kubectl nodeport commands
4970
- Blue - nodeport and upstreams for http traffic
5071
- Indigo - nodeport and upstreams for https traffic
51-
- Green - logs for api calls to LB Server #1
72+
- Green - NKL log for api calls to LB Server #1
5273
- Orange - Nginx LB Server upstream dashboard details
5374
- Kubernetes Worker Nodes are 10.1.1.8 and 10.1.1.10
5475

5576
<br/>
5677

57-
## Requirements
78+
The `Installation Guide` for TCP Loadbalancer Solution is located in the docs/tcp folder:
79+
80+
[TCP Installation Guide](docs/tcp/tcp-installation-guide.md)
81+
82+
<br/>
5883

59-
Please see the /docs folder for detailed documentation.
84+
The `Installation Guide` for HTTP Loadbalancer Solution is located in the docs/http folder:
85+
86+
[HTTP Installation Guide](docs/http/http-installation-guide.md)
6087

6188
<br/>
6289

63-
## Installation
90+
## Requirements
6491

65-
Please see the /docs folder for Installation Guide.
92+
Please see the /docs folder and Installation Guides for detailed documentation.
6693

6794
<br/>
6895

@@ -72,6 +99,12 @@ Read the [`CONTRIBUTING.md`](https://github.com/nginxinc/nginx-k8s-loadbalancer/
7299

73100
<br/>
74101

102+
## Authors
103+
- Chris Akker - Solutions Architect - Community and Alliances @ F5, Inc.
104+
- Steve Wagner - Solutions Architect - Community and Alliances @ F5, Inc.
105+
106+
<br/>
107+
75108
## License
76109

77110
[Apache License, Version 2.0](https://github.com/nginxinc/nginx-k8s-loadbalancer/blob/main/LICENSE)

0 commit comments

Comments
 (0)