Skip to content

Latest commit

 

History

History
112 lines (68 loc) · 3.83 KB

README.md

File metadata and controls

112 lines (68 loc) · 3.83 KB

nginx-loadbalancer-kubernetes


Welcome to the Nginx LoadBalancer for Kubernetes Solution!


Nginx K8s LB Nginx K8s LB

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.


This is a replacement for a Cloud Providers Service Type Loadbalancer, that is not available for On Premises Kubernetes Clusters.



Overview

  • 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.
  • This will synchronize the K8s Service Endpoint list, with the Nginx LB Server's upstream list.
  • 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.
  • NLK is a native Kubernetes Controller, running, configured and managed with standard K8s commands.
  • 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".
  • 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:
    • MultiCluster Active/Active Load Balancing
    • Horizontal Cluster Scaling
    • 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
    • Advanced TLS Processing - MutualTLS, OCSP, FIPS, dynamic cert loading
    • Advanced Security features - Oauth, JWT, App Protect WAF Firewall, Rate and Bandwidth limits
    • Nginx Java Script (NJS) for custom solutions
    • Nginx Zone Sync of KeyVal data

NLK Controller Software Design Overview - How it works

NLK Controller DESIGN and Architecture


Reference Diagram for NLK TCP Load Balancer Service


NLK Stream Diagram


Sample Screenshots of Solution at Runtime


NGINX LB ConfigMap

ConfigMap with 2 Nginx LB Servers defined for HA


NGINX LB Create Nodeport

Nginx LB Server Dashboard, NodePort, and NLK Controller Logging

Legend:

  • Red - kubectl nodeport commands
  • Blue - nodeport and upstreams for http traffic
  • Indigo - nodeport and upstreams for https traffic
  • Green - NLK log for api calls to LB Server #1
  • Orange - Nginx LB Server upstream dashboard details
  • Kubernetes Worker Nodes are 10.1.1.8 and 10.1.1.10

The Installation Guide for TCP Loadbalancer Solution is located in the tcp folder:

TCP Installation Guide


The Installation Guide for HTTP Loadbalancer Solution is located in the http folder:

HTTP Installation Guide


Requirements

Please see the /docs folder and Installation Guides for detailed documentation.


Development

Read the CONTRIBUTING.md file.


Authors

  • Chris Akker - Solutions Architect - Community and Alliances @ F5, Inc.
  • Steve Wagner - Solutions Architect - Community and Alliances @ F5, Inc.

License

Apache License, Version 2.0

© F5 Networks, Inc. 2023