All Projects → kindredgroup → ext_nginx

kindredgroup / ext_nginx

Licence: other
External Nginx Ingress Controller

Programming Languages

go
31211 projects - #10 most used programming language
lua
6591 projects
Makefile
30231 projects

Projects that are alternatives of or similar to ext nginx

Kubernetes Pfsense Controller
Integrate Kubernetes and pfSense
Stars: ✭ 100 (+566.67%)
Mutual labels:  ingress-controller
Contour
Contour is a Kubernetes ingress controller using Envoy proxy.
Stars: ✭ 2,985 (+19800%)
Mutual labels:  ingress-controller
trafficserver-ingress-controller
Apache Traffic Server Ingress Controller for Kubernetes
Stars: ✭ 29 (+93.33%)
Mutual labels:  ingress-controller
Nghttpx Ingress Lb
nghttpx ingress controller for Kubernetes
Stars: ✭ 115 (+666.67%)
Mutual labels:  ingress-controller
K8s Bigip Ctlr
Repository for F5 Container Ingress Services for Kubernetes & OpenShift.
Stars: ✭ 204 (+1260%)
Mutual labels:  ingress-controller
kubernetes-simple-ingress-controller
a simple kubernetes ingress controller
Stars: ✭ 44 (+193.33%)
Mutual labels:  ingress-controller
Kong Ingress
[DEPRECATED] A Kubernetes Ingress for Kong
Stars: ✭ 96 (+540%)
Mutual labels:  ingress-controller
aks-multi-tenant-agic
This sample shows how to use the Application Gateway Ingress Controller in a multi-tenant AKS cluster to expose multiple instances of the same application, one for each tenant.
Stars: ✭ 27 (+80%)
Mutual labels:  ingress-controller
Skipper
An HTTP router and reverse proxy for service composition, including use cases like Kubernetes Ingress
Stars: ✭ 2,606 (+17273.33%)
Mutual labels:  ingress-controller
swarm-router
Scalable stateless «zero config» service-name ingress for docker swarm mode with a fresh more secure approach
Stars: ✭ 58 (+286.67%)
Mutual labels:  ingress-controller
Ingress Merge
Merge Ingress Controller for Kubernetes
Stars: ✭ 124 (+726.67%)
Mutual labels:  ingress-controller
Kanali
A Kubernetes Native API Management Solution
Stars: ✭ 192 (+1180%)
Mutual labels:  ingress-controller
tyk-helm-chart
A Helm chart repository to install Tyk Pro (with Dashboard), Tyk Hybrid or Tyk Headless chart.
Stars: ✭ 69 (+360%)
Mutual labels:  ingress-controller
Ingress Nginx
NGINX Ingress Controller for Kubernetes
Stars: ✭ 11,732 (+78113.33%)
Mutual labels:  ingress-controller
aws-eks-accelerator-for-terraform
Configure and deploy complete EKS clusters.
Stars: ✭ 1,220 (+8033.33%)
Mutual labels:  ingress-controller
Kubernetes Ingress Controller
🦍 Kong for Kubernetes: the official Ingress Controller for Kubernetes.
Stars: ✭ 1,347 (+8880%)
Mutual labels:  ingress-controller
terraform-kubernetes-alb-ingress-controller
Terraform module to ease deployment of the AWS ALB Ingress Controller
Stars: ✭ 55 (+266.67%)
Mutual labels:  ingress-controller
traefik-on-service-fabric
Azure Service Fabric now has support for Traefik!
Stars: ✭ 51 (+240%)
Mutual labels:  ingress-controller
opennms-drift-kubernetes
OpenNMS Drift Deployment in Kubernetes for testing and learning purposes
Stars: ✭ 15 (+0%)
Mutual labels:  ingress-controller
ingress
Kubernetes Ingress controller with integrated Wallarm services
Stars: ✭ 31 (+106.67%)
Mutual labels:  ingress-controller

External Nginx Ingress Controller

The external nginx ingress controller is a fork of the orginal nginx ingress controller with the goal to be usable outside of kubernetes. Instead of running in a pod, this will run as a system service along side nginx.

The goal of the external ingress controller is to be usable where nginx cannot be run in a container, such as when nginx is fronting customers on Internet in such a way that container restarts are not a option.

Example when you host your kubernetes cluster on-premise and don't want to have multiple layers of "load balancing" in front of your pods. You also really like nginx. Using this ingress controller on your edge load balacing cluster, the configuration is kept up too date and you can still use nginx build-in functions for zero down time deployments of config and binaries that the normal "in-cluster" ingress controller don't support.

Design

Overview

Alt text

The following shows how nginx and the ingress controller sits outside the cluster to serve traffic. The ingress controller updates nginx configuration file with the ip addresses to the cluster pods directly. Simple and understandable.

Requirements

  • Nginx should be installed and managed already. :)

  • The nginx nodes that live outside the cluster needs to be able to have network connectivity to both the api servers of kubernetes and the pods themselves.

Note:

Clustering and making nginx highly availble is outside the scope of this project. This could be done many ways. We at Unibet use ECMP in our routers to load balance traffic at the edge over all our instances in a stateless manner, while also making sure the nodes always are in HA pairs for failover. This is just one setup of a edge cluster and there is many different ways you could accomplish the same.

Networking is outside the scope of this project, briefly we use bgp with Project Calico to enable the pods to have visible ip addresses outside the cluster on our network that can be accessed like normal.

Installation

TODO: Write here nice instructions, basically

  • git clone https://github.com/kubernetes/ingress to path $GOPATH/src/k8s.io
  • cd $GOPATH/src/k8s.io/controllers
  • git clone https://github.com/unibet/ext_nginx
  • cd ext_nginx
  • make build
  • copy rootfs ( binary and config ) from rootfs/nginx-ingress-controller to your server
  • make sure you have k8s config file
  • create a init file to launch as a service
  • run with correct arguments

example: export POD_NAME=default export POD_NAMESPACE=default ./nginx-ingress-controller --default-backend-service=default/$K8_DEFAULTBACKEND --apiserver-host=https://$K8_API --kubeconfig ~/.kube/config

  • profit

Usage

It works very much like the original ingress controller, and supports mostly the same features. For full understanding, please read: https://github.com/kubernetes/ingress/tree/master/controllers/nginx

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].