Skip to content
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

FAQ: NGINX Ingress Controller for routing #415

Merged
merged 5 commits into from
Jan 12, 2020
Merged
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
22 changes: 22 additions & 0 deletions content/faq/is-nginx-ingress-needed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
title: "Is the NGINX Ingress Controller needed for internal routing?"
description: "The NGINX Ingress Controller is the de facto open-source ingress for Kubernetes."
tags:
- NGINX
- Kubernetes
- GKE
- ingress
---

## Question

Is the NGINX Ingress Controller needed for internal routing?


## Answer

The NGINX Ingress Controller is the de facto open-source ingress for Kubernetes. It handles all inbound HTTP routing to services based on host and path. There are a number of other ingress controllers, including one that supports the new NLB offering by AWS.

On GKE, deploying an NGINX Ingress Controller is not required, as GKE ties in directly with GCP load balancers. On AWS, the NGINX Ingress Controller is currently (2018) the de facto standard on AWS. However, there are up and coming contenders.

That said, the NGINX Ingress Controller is not uncommon in GKE as well. It operates in tandem with the platform-provided load balancer to route traffic within the cluster. The benefits of using the NGINX Ingress Controller is that you get all the features of NGINX (e.g. lua). The downside is that for very large clusters running thousands of pods, the Community Edition (CE) ingress reloads might be disruptive (which is why there's an enterprise offering by NGINX that supports real-time updates). A cluster can run multiple Ingress Controller deployments—even one per namespace. This can get expensive though, since each NGINX Ingress Controller ships with its own load balancer. An ingress resource then uses an annotation to select an Ingress Controller.