|
1 | 1 | # nginx-loadbalancer-kubernetes
|
2 | 2 |
|
3 |
| -<br/> |
4 |
| - |
5 |
| -# Welcome to the Nginx LoadBalancer for Kubernetes Solution! |
6 |
| - |
7 |
| -<br/> |
| 3 | +## Welcome to the NGINX LoadBalancer for Kubernetes Solution |
8 | 4 |
|
9 | 5 |  | 
|
10 | 6 | --- | ---
|
11 | 7 |
|
12 |
| -<br/> |
13 |
| - |
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/> |
17 |
| - |
18 |
| ->>**This is a replacement for a Cloud Providers `Service Type Loadbalancer`, that is not available for On Premises Kubernetes Clusters.** |
| 8 | +This repo contains source code and documents for a `Kubernetes Controller from NGINX`, that provides TCP and HTTP load balancing external to a Kubernetes cluster running on premises. |
19 | 9 |
|
20 |
| -<br/> |
21 |
| -<br/> |
| 10 | +>>**This is a replacement for a cloud provider's `Service Type Loadbalancer`, that is not available for on premises Kubernetes clusters.** |
22 | 11 |
|
| 12 | +## Overview |
23 | 13 |
|
24 |
| -# Overview |
25 |
| - |
26 |
| -- `NLK - NGINX Loadbalancer for Kubernetes` 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 |
| -- NLK is a native Kubernetes Controller, running, configured and managed with standard K8s commands. |
30 |
| -- NLK 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 |
| -- NLK 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 |
39 |
| - |
40 |
| -<br/> |
| 14 | +- `NLK - NGINX Loadbalancer for Kubernetes` is a Kubernetes controller from NGINX that monitors specified Kubernetes services, and then sends API calls to an external NGINX Plus server to manage NGINX Upstream servers dynamically. |
| 15 | +- This will `synchronize` the Kubernetes service's endpoints with the NGINX server's upstream list. |
| 16 | +- One use case is to track the`NodePort` IP:Port definitions for the NGINX Ingress Controller's `nginx-ingress Service`. |
| 17 | +- NLK is a native Kubernetes controller, running, configured and managed with standard Kubernetes commands. |
| 18 | +- When NLK is paired with the NGINX Plus Server located external to the Kubernetes cluster, this controller will provide a `TCP Load Balancer Service` for on premises Kubernetes clusters, which do not have access to a cloud provider's "Service Type LoadBalancer". |
| 19 | +- NLK paired with the NGINX Plus Server located external to the Cluster, using NGINX's advanced HTTP features, provides an `HTTP Load Balancer Service` for enterprise traffic management solutions, such as: |
| 20 | + - MultiCluster Active/Active Load Balancing |
| 21 | + - Horizontal Cluster Scaling |
| 22 | + - 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 |
| 23 | + - Advanced TLS Processing - MutualTLS, OCSP, FIPS, dynamic cert loading |
| 24 | + - Advanced Security features - Oauth, JWT, App Protect WAF Firewall, Rate and Bandwidth limits |
| 25 | + - NGINX Java Script (NJS) for custom solutions |
| 26 | + - NGINX Zone Sync of KeyVal data |
41 | 27 |
|
42 | 28 | ## NLK Controller Software Design Overview - How it works
|
43 | 29 |
|
44 | 30 | [NLK Controller DESIGN and Architecture](DESIGN.md)
|
45 | 31 |
|
46 |
| -<br/> |
47 |
| - |
48 | 32 | ## Reference Diagram for NLK TCP Load Balancer Service
|
49 | 33 |
|
50 |
| -<br/> |
51 |
| - |
52 | 34 | 
|
53 | 35 |
|
54 |
| -<br/> |
55 |
| - |
56 | 36 | ## Sample Screenshots of Solution at Runtime
|
57 | 37 |
|
58 |
| -<br/> |
59 |
| - |
60 | 38 | 
|
61 |
| -### ConfigMap with 2 Nginx LB Servers defined for HA |
62 | 39 |
|
63 |
| -<br/> |
| 40 | +### ConfigMap with 2 NGINX LB Servers defined for HA |
64 | 41 |
|
65 | 42 | 
|
66 |
| -### Nginx LB Server Dashboard, NodePort, and NLK Controller Logging |
67 | 43 |
|
68 |
| -### Legend: |
| 44 | +### NGINX LB Server Dashboard, NodePort, and NLK Controller Logging |
| 45 | + |
| 46 | +### Legend |
| 47 | + |
69 | 48 | - Red - kubectl nodeport commands
|
70 | 49 | - Blue - nodeport and upstreams for http traffic
|
71 | 50 | - Indigo - nodeport and upstreams for https traffic
|
72 | 51 | - Green - NLK log for api calls to LB Server #1
|
73 |
| -- Orange - Nginx LB Server upstream dashboard details |
| 52 | +- Orange - NGINX LB Server upstream dashboard details |
74 | 53 | - Kubernetes Worker Nodes are 10.1.1.8 and 10.1.1.10
|
75 | 54 |
|
76 |
| -<br/> |
77 |
| - |
78 | 55 | The `Installation Guide` for TCP Loadbalancer Solution is located in the tcp folder:
|
79 | 56 |
|
80 | 57 | [TCP Installation Guide](tcp/tcp-installation-guide.md)
|
81 | 58 |
|
82 |
| -<br/> |
83 |
| - |
84 | 59 | The `Installation Guide` for HTTP Loadbalancer Solution is located in the http folder:
|
85 | 60 |
|
86 | 61 | [HTTP Installation Guide](http/http-installation-guide.md)
|
87 | 62 |
|
88 |
| -<br/> |
89 |
| - |
90 | 63 | ## Requirements
|
91 | 64 |
|
92 | 65 | Please see the /docs folder and Installation Guides for detailed documentation.
|
93 | 66 |
|
94 |
| -<br/> |
95 |
| - |
96 | 67 | ## Development
|
97 | 68 |
|
98 | 69 | Read the [`CONTRIBUTING.md`](https://github.com/nginxinc/nginx-loadbalancer-kubernetes/blob/main/CONTRIBUTING.md) file.
|
99 | 70 |
|
100 |
| -<br/> |
101 |
| - |
102 | 71 | ## Authors
|
| 72 | + |
103 | 73 | - Chris Akker - Solutions Architect - Community and Alliances @ F5, Inc.
|
104 | 74 | - Steve Wagner - Solutions Architect - Community and Alliances @ F5, Inc.
|
105 | 75 |
|
106 |
| -<br/> |
107 |
| - |
108 | 76 | ## License
|
109 | 77 |
|
110 | 78 | [Apache License, Version 2.0](https://github.com/nginxinc/nginx-loadbalancer-kubernetes/blob/main/LICENSE)
|
|
0 commit comments