From fc6f947d549dbbabaccb73774c91e39131990051 Mon Sep 17 00:00:00 2001 From: Cody Clark Date: Wed, 27 Feb 2019 15:15:30 -0800 Subject: [PATCH] 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 --- .../ingress-controllers.md | 25 +++-- .../concepts/services-networking/ingress.md | 46 +-------- .../ingress-minikube.md | 97 +++++++++---------- 3 files changed, 62 insertions(+), 106 deletions(-) diff --git a/content/en/docs/concepts/services-networking/ingress-controllers.md b/content/en/docs/concepts/services-networking/ingress-controllers.md index 28548bee80ee8..57af46a01a0c5 100644 --- a/content/en/docs/concepts/services-networking/ingress-controllers.md +++ b/content/en/docs/concepts/services-networking/ingress-controllers.md @@ -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. @@ -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 %}} diff --git a/content/en/docs/concepts/services-networking/ingress.md b/content/en/docs/concepts/services-networking/ingress.md index 3f0c26f7b0a87..64b094ff21a7a 100644 --- a/content/en/docs/concepts/services-networking/ingress.md +++ b/content/en/docs/concepts/services-networking/ingress.md @@ -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 @@ -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 %}} - diff --git a/content/en/docs/tasks/access-application-cluster/ingress-minikube.md b/content/en/docs/tasks/access-application-cluster/ingress-minikube.md index b7fd22a5ebc23..a810603f19aa2 100644 --- a/content/en/docs/tasks/access-application-cluster/ingress-minikube.md +++ b/content/en/docs/tasks/access-application-cluster/ingress-minikube.md @@ -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. @@ -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 @@ -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: @@ -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 @@ -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 ``` @@ -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 @@ -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 @@ -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: @@ -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 %}}