Fix Ingress callouts, links, nav, and templating (#12720)

* Fix Ingress callouts, links, nav, and templating

* Update ingress.md

* Update ingress-minikube.md

* Delete .md that caused 404

* Delete .md that caused 404

* Update ingress-controllers.md

* Update ingress-minikube.md

* spell check pass

* Update ingress.md

* Update ingress-minikube.md
This commit is contained in:
Cody Clark
2019-02-27 15:15:30 -08:00
committed by Kubernetes Prow Robot
parent ab5e8c0d65
commit 0bbe2db0be
3 changed files with 65 additions and 109 deletions
@@ -2,23 +2,30 @@
title: Ingress Controllers title: Ingress Controllers
reviewers: reviewers:
content_template: templates/concept content_template: templates/concept
toc_hide: true weight: 40
--- ---
{{% capture overview %}}
In order for the Ingress resource to work, the cluster must have an ingress controller running.
Unlike other types of controllers which run as part of the `kube-controller-manager` binary, Ingress controllers
are not started automatically with a cluster. Use this page to 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.
{{% /capture %}}
{{% capture body %}} {{% capture body %}}
## Ingress controllers ## Additional 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:
* [Ambassador](https://www.getambassador.io/) API Gateway is an [Envoy](https://www.envoyproxy.io) based ingress
controller with [community](https://www.getambassador.io/docs) or
[commercial](https://www.getambassador.io/pro/) support from [Datawire](https://www.datawire.io/).
* [AppsCode Inc.](https://appscode.com) offers support and maintenance for the most widely used [HAProxy](http://www.haproxy.org/) based ingress controller [Voyager](https://appscode.com/products/voyager).
* [Contour](https://github.com/heptio/contour) is an [Envoy](https://www.envoyproxy.io) based ingress controller * [Contour](https://github.com/heptio/contour) is an [Envoy](https://www.envoyproxy.io) based ingress controller
provided and supported by Heptio. 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. * 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.
@@ -62,6 +69,6 @@ Make sure you review your ingress controller's documentation to understand the c
{{% capture whatsnext %}} {{% capture whatsnext %}}
* Learn more about [Ingress](/docs/concepts/services-networking/ingress/). * 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). * [Set up Ingress on Minikube with the NGINX Controller](/docs/tasks/access-application-cluster/ingress-minikube).
{{% /capture %}} {{% /capture %}}
@@ -57,48 +57,7 @@ of this controller if you are using GCE/GKE.
In environments other than GCE/Google Kubernetes Engine, you may need to In environments other than GCE/Google Kubernetes Engine, you may need to
[deploy an ingress controller](https://kubernetes.github.io/ingress-nginx/deploy/). There are a number of [deploy an ingress controller](https://kubernetes.github.io/ingress-nginx/deploy/). There are a number of
[ingress controller](#ingress-controllers) you may choose from. [ingress controllers](/docs/concepts/services-networking/ingress-controllers) you may choose from.
## 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:
* [Ambassador](https://www.getambassador.io/) API Gateway is an [Envoy](https://www.envoyproxy.io) based ingress
controller with [community](https://www.getambassador.io/docs) or
[commercial](https://www.getambassador.io/pro/) support from [Datawire](https://www.datawire.io/).
* [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).
* [AppsCode Inc.](https://appscode.com) offers support and maintenance for the most widely used [HAProxy](http://www.haproxy.org/) based ingress controller [Voyager](https://appscode.com/products/voyager).
* [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).
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.
### Before you begin ### Before you begin
@@ -511,6 +470,5 @@ You can expose a Service in multiple ways that don't directly involve the Ingres
{{% /capture %}} {{% /capture %}}
{{% capture whatsnext %}} {{% capture whatsnext %}}
* [Set up Ingress on Minikube with the NGINX Controller](/docs/tasks/access-application-cluster/ingress-minikube.md) * [Set up Ingress on Minikube with the NGINX Controller](/docs/tasks/access-application-cluster/ingress-minikube)
{{% /capture %}} {{% /capture %}}
@@ -7,7 +7,7 @@ weight: 100
{{% capture overview %}} {{% capture overview %}}
An [Ingress](/docs/concepts/services-networking/ingress/) is an API object that defines rules which allow external access An [Ingress](/docs/concepts/services-networking/ingress/) is an API object that defines rules which allow external access
to services in a cluster. An [Ingress controller](#) fulfills the rules set in the Ingress. to services in a cluster. An [Ingress controller](/docs/concepts/services-networking/ingress-controllers/) fulfills the rules set in the Ingress.
{{< caution >}} {{< caution >}}
For the Ingress resource to work, the cluster **must** also have an Ingress controller running. For the Ingress resource to work, the cluster **must** also have an Ingress controller running.
@@ -51,12 +51,10 @@ This page shows you how to set up a simple Ingress which routes requests to Serv
kubectl get pods -n kube-system kubectl get pods -n kube-system
``` ```
{{< note >}} {{< note >}}This can take up to a minute.{{< /note >}}
This can take up to a minute.
{{< /note >}}
Output: Output:
```shell ```shell
NAME READY STATUS RESTARTS AGE NAME READY STATUS RESTARTS AGE
default-http-backend-59868b7dd6-xb8tq 1/1 Running 0 1m default-http-backend-59868b7dd6-xb8tq 1/1 Running 0 1m
@@ -118,10 +116,7 @@ This page shows you how to set up a simple Ingress which routes requests to Serv
http://172.17.0.15:31637 http://172.17.0.15:31637
``` ```
{{< note >}} {{< note >}}Katacoda environment only: at the top of the terminal panel, click the plus sign, and then click **Select port to view on Host 1**. Enter the NodePort, in this case `31637`, and then click **Display Port**.{{< /note >}}
Katacoda environment only: at the top of the terminal panel, click the plus sign, and then click
**Select port to view on Host 1**. Enter the NodePort, in this case `31637`, and then click **Display Port**
{{< /note >}}
Output: Output:
@@ -130,8 +125,8 @@ This page shows you how to set up a simple Ingress which routes requests to Serv
Version: 1.0.0 Version: 1.0.0
Hostname: web-55b8c6998d-8k564 Hostname: web-55b8c6998d-8k564
``` ```
You can now access the sample app via the Minikube IP address and NodePort. The next step will let you access You can now access the sample app via the Minikube IP address and NodePort. The next step lets you access
the app using the Ingress resource. the app using the Ingress resource.
## Create an Ingress resource ## Create an Ingress resource
@@ -140,32 +135,33 @@ The following file is an Ingress resource that sends traffic to your Service via
1. Create `example-ingress.yaml` from the following file: 1. Create `example-ingress.yaml` from the following file:
```yaml ```yaml
--- ---
apiVersion: extensions/v1beta1 apiVersion: extensions/v1beta1
kind: Ingress kind: Ingress
metadata: metadata:
name: example-ingress name: example-ingress
annotations: annotations:
nginx.ingress.kubernetes.io/rewrite-target: / nginx.ingress.kubernetes.io/rewrite-target: /
spec: spec:
rules: rules:
- host: hello-world.info - host: hello-world.info
http: http:
paths: paths:
- path: /* - path: /*
backend: backend:
serviceName: web serviceName: web
servicePort: 8080 servicePort: 8080
``` ```
1. Create the Ingress resrouce by running the following command: 1. Create the Ingress resource by running the following command:
```shell ```shell
kubectl apply -f example-ingress.yaml kubectl apply -f example-ingress.yaml
``` ```
Output: Output:
```shell ```shell
ingress.extensions/example-ingress created ingress.extensions/example-ingress created
``` ```
@@ -176,9 +172,7 @@ The following file is an Ingress resource that sends traffic to your Service via
kubectl get ingress kubectl get ingress
``` ```
{{< note >}} {{< note >}}This can take a couple of minutes.{{< /note >}}
This can take a couple of minutes.
{{< /note >}}
```shell ```shell
NAME HOSTS ADDRESS PORTS AGE NAME HOSTS ADDRESS PORTS AGE
@@ -187,28 +181,27 @@ The following file is an Ingress resource that sends traffic to your Service via
1. Add the following line to the bottom of the `/etc/hosts` file. 1. Add the following line to the bottom of the `/etc/hosts` file.
```shell ```
172.17.0.15 hello-world.info 172.17.0.15 hello-world.info
``` ```
This sends requests from hello-world.info to Minikube. This sends requests from hello-world.info to Minikube.
1. Verify that the Ingress contorller is directing traffic: 1. Verify that the Ingress controller is directing traffic:
```shell ```shell
curl hello-world.info curl hello-world.info
```` ```
Output: Output:
```shell ```shell
Hello, world! Hello, world!
Version: 1.0.0 Version: 1.0.0
Hostname: web-55b8c6998d-8k564 Hostname: web-55b8c6998d-8k564
``` ```
{{< note >}} {{< note >}}If you are running Minikube locally, you can visit hello-world.info from your browser.{{< /note >}}
If you are running Minikube locally, you can visit hello-world.info from your browser.
{{< /note >}}
## Create Second Deployment ## Create Second Deployment
@@ -239,12 +232,12 @@ The following file is an Ingress resource that sends traffic to your Service via
1. Edit the existing `example-ingress.yaml` and add the following lines: 1. Edit the existing `example-ingress.yaml` and add the following lines:
```yaml ```yaml
- path: /v2/* - path: /v2/*
backend: backend:
serviceName: web2 serviceName: web2
servicePort: 8080 servicePort: 8080
``` ```
1. Apply the changes: 1. Apply the changes:
@@ -285,16 +278,14 @@ The following file is an Ingress resource that sends traffic to your Service via
Hostname: web2-75cd47646f-t8cjk Hostname: web2-75cd47646f-t8cjk
``` ```
{{< note >}} {{< note >}}If you are running Minikube locally, you can visit hello-world.info and hello-world.info/v2 from your browser.{{< /note >}}
If you are running Minikube locally, you can visit hello-world.info and hello-world.info/v2 from your browser.
{{< /note >}}
{{% /capture %}} {{% /capture %}}
{{% capture whatsnext %}} {{% capture whatsnext %}}
* Read more about [Ingress](/docs/concepts/services-networking/ingress/) * Read more about [Ingress](/docs/concepts/services-networking/ingress/)
* Read more about [Ingress Controllers](#) * Read more about [Ingress Controllers](/docs/concepts/services-networking/ingress-controllers/)
* Read more about [Services](/docs/concepts/services-networking/service/) * Read more about [Services](/docs/concepts/services-networking/service/)
{{% /capture %}} {{% /capture %}}