Ingress NGINX Controller for Kubernetes
![]() A kubernetes ingress controller which uses an instance of lyft/envoy as the load balancer. The goal here is to get good http2 support, which includes grpc forwarding. Envoy can also do basic tcp load balancing, although that isn't implemented in this controller currently. Quite a bit isn't supported currently, but it does function for basic application usage. There are a couple pieces. The root is the controller (controller.go) which recieves kubernetes ingress controller updates and turns them into the structure needed for envoy. That is then passed to the DiscovyerService (discovery.go) which presents the information in the lyft/envoy discovery endpoints (LDS, RDS, SDS, CDS). The third and final pieces is a process manager for envoy itself which manages configuring and running the lyft/envoy instance. Every piece is setup so that it'll only start serving / listening once basic routes are setup and in place (so in theory if you add another instance to a cluster you don't hit an "empty" envoy and get a bunch of 404 errors) The need for `DiscoveryService` http service should be going away, as the envoy v2 api gets implemented (https://github.com/lyft/envoy-api#apis). In specific, the ingress controller would implement an "Aggregated Discovery Service (ADS)". That would mean the ingress controller could push updates directly to lyft/envoy using gRPC, minimizing update time. My general question is if there's interest in moving this towards a proper kubernetes/ingress controller, and if so, what is the process to do so? This works for my basic cases. There are definitely many more of the cases that could be implemented (And many more config options which should be controllable via the ingresses themselves). Things like TCP services can also be implemented, just not a feature I'd needed. |
||
---|---|---|
controllers | ||
core/pkg | ||
docs | ||
examples | ||
Godeps | ||
hack | ||
images | ||
tests/manifests | ||
vendor | ||
.gitignore | ||
.travis.yml | ||
CONTRIBUTING.md | ||
LICENSE | ||
Makefile | ||
OWNERS | ||
README.md |
Ingress
Description
This repository contains controllers built around the Kubernetes Ingress resource. It is currently in a state of flux as project maintainers port code over from its previous home.
Navigation
- Learn more about using Ingress
- Write your own Ingress controller
- See our developer documentation
- Deploy existing Ingress controllers
- See our admin documentation
- Contribute
- See the contributor guidelines
- Debug
- Peruse the FAQ section
- Ask on one of the user-support channels