Coder Social home page Coder Social logo

kubernetes-ingress's Introduction

NGINX Ingress Controllers

This repo provides implementations of an Ingress controller for NGINX and NGINX Plus.

What is Ingress?

An Ingress is a Kubernetes resource that lets you configure an HTTP load balancer for your Kubernetes services. Such a load balancer usually exposes your services to the clients outside of your Kubernetes cluster. An Ingress resource supports:

  • Exposing services:
    • Via custom URLs (for example, service A at the URL /serviceA and service B at the URL /serviceB).
    • Via multiple host names (for example, foo.example.com for one group of services and bar.example.com for another group).
  • Configuring SSL termination per each exposed host name.

See the Ingress User Guide to learn more.

What is an Ingress Controller?

An Ingress controller is an application that monitors Ingress resources via the Kubernetes API and updates the configuration of a load balancer in case of any changes. Different load balancers require different Ingress controller implementations. Typically, an Ingress controller is deployed as a pod in a cluster. In the case of software load balancers, such as NGINX, an Ingress controller is deployed in a pod along with a load balancer.

See https://github.com/kubernetes/contrib/tree/master/ingress/controllers/ to learn more about Ingress controllers and find out about different implementations.

NGINX and NGINX Plus Ingress Controllers

We provide Ingress controllers for NGINX and NGINX Plus that support the following Ingress features:

  • SSL termination
  • Path-based rules
  • Multiple host names

Additionally, we provide a mechanism to customize the NGINX configuration.

Refer to the examples folder to find out how to deploy NGINX Ingress Controllers and customize the NGINX configuration.

Difference between NGINX and NGINX Plus controllers

NGINX Plus is a commercial version of NGINX that comes with advanced features and support.

Deployment of the NGINX Plus Ingress Controller requires you to do one extra step: build your own Docker image using the certificate and key of your license. The Docker image of the NGINX Ingress controller is available on Docker Hub.

The NGINX Plus Ingress Controller leverages the advanced features of NGINX Plus, which gives you the following additional benefits:

  • Reduced Number of Configuration Reloads Every time the number of pods of services you expose via Ingress changes, the Ingress controller updates the configuration of NGINX to reflect those changes. For open source NGINX software, the configuration file must be changed followed by the configuration reload. For NGINX Plus, we use the on-the-fly reconfiguration feature, which allows you to update NGINX Plus on-the-fly without reloading the configuration. This prevents a potential increase of memory usage and overall system overloading, which could occur with frequent configuration reloads.
  • Real-time Statistics NGINX Plus provides you with advanced statistics, which you can access either through the API or via the built-in dashboard. This can give you insights into how NGINX Plus and your applications are performing.

Advanced load balancing (beyond Ingress)

When your requirements go beyond what Ingress offers, you can use NGINX and NGINX Plus without the Ingress Controller.

NGINX Plus comes with a DNS-based dynamic reconfiguration feature, which lets you keep the list of the endpoints of your services in sync with NGINX Plus. Read more about how to setup NGINX Plus this way in Load Balancing Kubernetes Services with NGINX Plus.

Production status

The status of the NGINX Ingress controllers is currently experimental.

Contacts

We’d like to hear your feedback! If you have any suggestions or experience issues with our Ingress Controllers, please create an issue or send a pull request on Github. You can contact us directly via [email protected]. Commercial support is available.

kubernetes-ingress's People

Contributors

pleshakov avatar oyvindio avatar goblain avatar

Watchers

Stig Kleppe-Jørgensen avatar  avatar Geir A. Lund avatar Alexander Sagen avatar Henning Spjelkavik avatar Øyvind Ødegård avatar Anders avatar James Cloos avatar Renato Arruda avatar Fredrik Rødland avatar Karsten Mevassvik avatar  avatar Giao The Cung avatar espenkm avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.