Skip to content

Commit

Permalink
Merge pull request #12 from nginxinc/akker
Browse files Browse the repository at this point in the history
Akker
  • Loading branch information
chrisakker authored Mar 1, 2023
2 parents b5f1461 + 5b8fe36 commit 7ad43d0
Show file tree
Hide file tree
Showing 18 changed files with 487 additions and 126 deletions.
28 changes: 17 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,35 +1,39 @@
[![Go Report Card](https://goreportcard.com/badge/nginxinc/nginx-k8s-edge-controller)](https://goreportcard.com/report/nginxinc/nginx-k8s-edge-controller)

# nginx-k8s-edge-controller

## Welcome to the Nginx Kubernetes Load Balancer project !

<br/>

This repo contains source code and documents for a new Kubernetes Controller, that provides TCP load balancing external to a k8s cluster. It is a replacement for a Cloud Providers "Service Type Loadbalancer", that is missing from On Premises Kubernetes Clusters.
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.

<br/>

>>**This is a replacement for a Cloud Providers "Service Type Loadbalancer", that is missing from On Premises Kubernetes Clusters.**
<br/>

## Overview

- Create a new K8s Controller, that will monitor specified k8s Service Endpoints, and then send API calls to an external NginxPlus server to manage Nginx Upstream server blocks.
- This is will synchronize the K8s Service Endpoint list, with the Nginx LB server's Upstream block server list.
- 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.
- This is will `synchronize` the K8s Service Endpoint list, with the Nginx LB server's Upstream server list.
- The primary use case is for tracking the NodePort IP:Port definitions for the Nginx Ingress Controller's `nginx-ingress Service`.
- With the NginxPlus 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".
- Make the solution a native Kubernetes Component, configured and managed with standard K8s tools.
- 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".
- Make the solution a native Kubernetes Component, running, configured and managed with standard K8s commands.

<br/>

## Reference Diagram

<br/>

![NGINX LB Server](docs/media/nginxlb-nklv1.png)
![NGINX LB Server](docs/media/nginxlb-nklv2.png)

<br/>

## Sample Screenshots of Runtime

<br/>

### Configuration with 2 Nginx LB Servers defined (HA):

![NGINX LB ConfigMap](docs/media/nkl-pod-configmap.png)
Expand All @@ -46,23 +50,25 @@ Legend:
- Indigo - nodeport and upstreams for https traffic
- Green - logs for api calls to LB Server #1
- Orange - Nginx LB Server upstream dashboard details
- Kubernetes nodes are 10.1.1.8 and 10.1.1.10
- Kubernetes Worker Nodes are 10.1.1.8 and 10.1.1.10

<br/>

## Requirements

Please see the /docs folder for detailed documentation.

<br/>

## Installation

Please see the /docs folder for detailed documentation.
Please see the /docs folder for Installation Guide.

<br/>

## Development

No contributions are being accepted at this time.
Contributions are being accepted at this time.
Read the [`CONTRIBUTING.md`](https://github.com/nginxinc/nginx-k8s-edge-controller/blob/main/CONTRIBUTING.md) file.

<br/>
Expand Down
Loading

0 comments on commit 7ad43d0

Please sign in to comment.