68 lines
4.1 KiB
Markdown
68 lines
4.1 KiB
Markdown
|
---
|
||
|
title: Ingress Controllers
|
||
|
reviewers:
|
||
|
content_template: templates/concept
|
||
|
toc_hide: true
|
||
|
---
|
||
|
|
||
|
{{% capture body %}}
|
||
|
|
||
|
## Ingress controllers
|
||
|
|
||
|
In order for the Ingress resource to work, the cluster must have an ingress controller running.
|
||
|
This is unlike other types of controllers, which run as part of the `kube-controller-manager` binary,
|
||
|
and are typically started automatically with a cluster. Choose the ingress controller implementation
|
||
|
that best fits your cluster.
|
||
|
|
||
|
* Kubernetes as a project currently supports and maintains [GCE](https://git.k8s.io/ingress-gce/README.md) and
|
||
|
[nginx](https://git.k8s.io/ingress-nginx/README.md) controllers.
|
||
|
|
||
|
### Additional controllers include:
|
||
|
|
||
|
* [Contour](https://github.com/heptio/contour) is an [Envoy](https://www.envoyproxy.io) based ingress controller
|
||
|
provided and supported by Heptio.
|
||
|
* Citrix provides an [Ingress Controller](https://github.com/citrix/citrix-k8s-ingress-controller) for its hardware (MPX), virtualized (VPX) and [free containerized (CPX) ADC](https://www.citrix.com/products/citrix-adc/cpx-express.html) for [baremetal](https://github.com/citrix/citrix-k8s-ingress-controller/tree/master/deployment/baremetal) and [cloud](https://github.com/citrix/citrix-k8s-ingress-controller/tree/master/deployment) deployments.
|
||
|
* F5 Networks provides [support and maintenance](https://support.f5.com/csp/article/K86859508)
|
||
|
for the [F5 BIG-IP Controller for Kubernetes](http://clouddocs.f5.com/products/connectors/k8s-bigip-ctlr/latest).
|
||
|
* [Gloo](https://gloo.solo.io) is an open-source ingress controller based on [Envoy](https://www.envoyproxy.io) which offers API Gateway functionality with enterprise support from [solo.io](https://www.solo.io).
|
||
|
* [HAProxy](http://www.haproxy.org/) based ingress controller
|
||
|
[jcmoraisjr/haproxy-ingress](https://github.com/jcmoraisjr/haproxy-ingress) which is mentioned on the blog post
|
||
|
[HAProxy Ingress Controller for Kubernetes](https://www.haproxy.com/blog/haproxy_ingress_controller_for_kubernetes/).
|
||
|
[HAProxy Technologies](https://www.haproxy.com/) offers support and maintenance for HAProxy Enterprise and
|
||
|
the ingress controller [jcmoraisjr/haproxy-ingress](https://github.com/jcmoraisjr/haproxy-ingress).
|
||
|
* [Istio](https://istio.io/) based ingress controller
|
||
|
[Control Ingress Traffic](https://istio.io/docs/tasks/traffic-management/ingress/).
|
||
|
* [Kong](https://konghq.com/) offers [community](https://discuss.konghq.com/c/kubernetes) or
|
||
|
[commercial](https://konghq.com/kong-enterprise/) support and maintenance for the
|
||
|
[Kong Ingress Controller for Kubernetes](https://github.com/Kong/kubernetes-ingress-controller).
|
||
|
* [NGINX, Inc.](https://www.nginx.com/) offers support and maintenance for the
|
||
|
[NGINX Ingress Controller for Kubernetes](https://www.nginx.com/products/nginx/kubernetes-ingress-controller).
|
||
|
* [Traefik](https://github.com/containous/traefik) is a fully featured ingress controller
|
||
|
([Let's Encrypt](https://letsencrypt.org), secrets, http2, websocket), and it also comes with commercial
|
||
|
support by [Containous](https://containo.us/services).
|
||
|
|
||
|
## Using multiple Ingress controllers
|
||
|
|
||
|
You may deploy [any number of ingress controllers](https://git.k8s.io/ingress-nginx/docs/user-guide/multiple-ingress.md#multiple-ingress-controllers)
|
||
|
within a cluster. When you create an ingress, you should annotate each ingress with the appropriate
|
||
|
[`ingress.class`](https://git.k8s.io/ingress-gce/docs/faq/README.md#how-do-i-run-multiple-ingress-controllers-in-the-same-cluster)
|
||
|
to indicate which ingress controller should be used if more than one exists within your cluster.
|
||
|
|
||
|
If you do not define a class, your cloud provider may use a default ingress provider.
|
||
|
|
||
|
Ideally, all ingress controllers should fulfill this specification, but the various ingress
|
||
|
controllers operate slightly differently.
|
||
|
|
||
|
{{< note >}}
|
||
|
Make sure you review your ingress controller's documentation to understand the caveats of choosing it.
|
||
|
{{< /note >}}
|
||
|
|
||
|
{{% /capture %}}
|
||
|
|
||
|
{{% capture whatsnext %}}
|
||
|
|
||
|
* Learn more about [Ingress](/docs/concepts/services-networking/ingress/).
|
||
|
* [Set up Ingress on Minikube with the NGINX Controller](/docs/tasks/access-application-cluster/ingress-minikube.md).
|
||
|
|
||
|
{{% /capture %}}
|