Skip to content

Commit

Permalink
Fix Ingress callouts, links, nav, and templating (kubernetes#12720)
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
cody-clark authored and yagonobre committed Mar 14, 2019
1 parent 77dc5db commit 81e8930
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 106 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,30 @@
title: Ingress Controllers
reviewers:
content_template: templates/concept
toc_hide: true
weight: 40
---

{{% capture body %}}

## Ingress controllers
{{% capture overview %}}

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

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
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 %}}

### Additional controllers include:
## Additional controllers

* [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
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.
Expand Down Expand Up @@ -62,6 +69,6 @@ Make sure you review your ingress controller's documentation to understand the c
{{% 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).
* [Set up Ingress on Minikube with the NGINX Controller](/docs/tasks/access-application-cluster/ingress-minikube).

{{% /capture %}}
46 changes: 2 additions & 44 deletions content/en/docs/concepts/services-networking/ingress.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
[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

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.
[ingress controllers](/docs/concepts/services-networking/ingress-controllers) you may choose from.

### Before you begin

Expand Down Expand Up @@ -511,6 +470,5 @@ You can expose a Service in multiple ways that don't directly involve the Ingres
{{% /capture %}}

{{% 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 %}}

Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ weight: 100
{{% capture overview %}}

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 >}}
For the Ingress resource to work, the cluster **must** also have an Ingress controller running.
Expand Down Expand Up @@ -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
```

{{< note >}}
This can take up to a minute.
{{< /note >}}
{{< note >}}This can take up to a minute.{{< /note >}}

Output:

```shell
NAME READY STATUS RESTARTS AGE
default-http-backend-59868b7dd6-xb8tq 1/1 Running 0 1m
Expand Down Expand Up @@ -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
```

{{< 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 >}}
{{< 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:

Expand All @@ -130,8 +125,8 @@ This page shows you how to set up a simple Ingress which routes requests to Serv
Version: 1.0.0
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.

## Create an Ingress resource
Expand All @@ -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:

```yaml
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: example-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: hello-world.info
http:
paths:
- path: /*
backend:
serviceName: web
servicePort: 8080
```

1. Create the Ingress resrouce by running the following command:
```yaml
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: example-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: hello-world.info
http:
paths:
- path: /*
backend:
serviceName: web
servicePort: 8080
```

1. Create the Ingress resource by running the following command:

```shell
kubectl apply -f example-ingress.yaml
```

Output:

```shell
ingress.extensions/example-ingress created
```
Expand All @@ -176,9 +172,7 @@ The following file is an Ingress resource that sends traffic to your Service via
kubectl get ingress
```

{{< note >}}
This can take a couple of minutes.
{{< /note >}}
{{< note >}}This can take a couple of minutes.{{< /note >}}

```shell
NAME HOSTS ADDRESS PORTS AGE
Expand All @@ -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.

```shell
172.17.0.15 hello-world.info
```
```
172.17.0.15 hello-world.info
```

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
````
```

Output:

```shell
Hello, world!
Version: 1.0.0
Hostname: web-55b8c6998d-8k564
```

{{< note >}}
If you are running Minikube locally, you can visit hello-world.info from your browser.
{{< /note >}}
{{< note >}}If you are running Minikube locally, you can visit hello-world.info from your browser.{{< /note >}}

## Create Second Deployment

Expand Down Expand Up @@ -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:

```yaml
- path: /v2/*
backend:
serviceName: web2
servicePort: 8080
```
```yaml
- path: /v2/*
backend:
serviceName: web2
servicePort: 8080
```

1. Apply the changes:

Expand Down Expand Up @@ -285,16 +278,14 @@ The following file is an Ingress resource that sends traffic to your Service via
Hostname: web2-75cd47646f-t8cjk
```

{{< note >}}
If you are running Minikube locally, you can visit hello-world.info and hello-world.info/v2 from your browser.
{{< /note >}}
{{< note >}}If you are running Minikube locally, you can visit hello-world.info and hello-world.info/v2 from your browser.{{< /note >}}

{{% /capture %}}


{{% capture whatsnext %}}
* 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/)

{{% /capture %}}
Expand Down

0 comments on commit 81e8930

Please sign in to comment.