Skip to content

Files

Latest commit

0124aab · Aug 13, 2024

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Nov 27, 2023
Jun 13, 2023
Aug 13, 2024
Oct 24, 2023
Jun 30, 2023
Nov 29, 2023
Jun 30, 2023
Aug 22, 2023

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