Skip to content

Akker #12

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Mar 1, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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