Skip to content

Commit bc4c86a

Browse files
authored
Minor improvements (formatting, consistency) in install guide (kubernetes#8003)
Small changes, mostly: - formatting (especially in lists, since mkdocs doesn't seem to support nested lists) - use the same level of warning when it makes sense (intead of "danger", "failure", etc) - improve wording in a few places - re-order a few operations - move a few sentences that were out of place
1 parent e621c6e commit bc4c86a

File tree

1 file changed

+57
-57
lines changed

1 file changed

+57
-57
lines changed

docs/deploy/index.md

+57-57
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# Installation Guide
22

33
There are multiple ways to install the NGINX ingress controller:
4+
45
- with [Helm](https://helm.sh), using the project repository chart;
56
- with `kubectl apply`, using YAML manifests;
67
- with specific addons (e.g. for [minikube](#minikube) or [MicroK8s](#microk8s)).
@@ -12,23 +13,24 @@ On most Kubernetes clusters, the ingress controller will work without requiring
1213
<!-- Quick tip: run `grep '^##' index.md` to check that the table of contents is up to date. -->
1314

1415
- [Quick start](#quick-start)
16+
1517
- [Environment-specific instructions](#environment-specific-instructions)
16-
- [Docker Desktop](#docker-desktop)
17-
- [minikube](#minikube)
18-
- [MicroK8s](#microk8s)
19-
- [AWS](#aws)
20-
- [GCE - GKE](#gce-gke)
21-
- [Azure](#azure)
22-
- [Digital Ocean](#digital-ocean)
23-
- [Scaleway](#scaleway)
24-
- [Exoscale](#exoscale)
25-
- [Oracle Cloud Infrastructure](#oracle-cloud-infrastructure)
26-
- [Bare-metal](#bare-metal-clusters)
18+
- ... [Docker Desktop](#docker-desktop)
19+
- ... [minikube](#minikube)
20+
- ... [MicroK8s](#microk8s)
21+
- ... [AWS](#aws)
22+
- ... [GCE - GKE](#gce-gke)
23+
- ... [Azure](#azure)
24+
- ... [Digital Ocean](#digital-ocean)
25+
- ... [Scaleway](#scaleway)
26+
- ... [Exoscale](#exoscale)
27+
- ... [Oracle Cloud Infrastructure](#oracle-cloud-infrastructure)
28+
- ... [Bare-metal](#bare-metal-clusters)
2729
- [Miscellaneous](#miscellaneous)
2830

2931
## Quick start
3032

31-
You can deploy the ingress controller with the following command:
33+
**If you have Helm,** you can deploy the ingress controller with the following command:
3234

3335
```console
3436
helm upgrade --install ingress-nginx ingress-nginx \
@@ -40,13 +42,11 @@ It will install the controller in the `ingress-nginx` namespace, creating that n
4042

4143
!!! info
4244
This command is *idempotent*:
45+
4346
- if the ingress controller is not installed, it will install it,
4447
- if the ingress controller is already installed, it will upgrade it.
4548

46-
This requires Helm version 3. If you prefer to use a YAML manifest, you can run the following command instead:
47-
48-
!!! attention
49-
Before running the command at your terminal, make sure Kubernetes is enabled at Docker settings
49+
**If you don't have Helm** or if you prefer to use a YAML manifest, you can run the following command instead:
5050

5151
```console
5252
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.0/deploy/static/provider/cloud/deploy.yaml
@@ -109,7 +109,9 @@ You can see that IP address or FQDN with the following command:
109109
kubectl get service ingress-nginx-controller --namespace=ingress-nginx
110110
```
111111

112-
Set up a DNS record pointing to that IP address or FQDN; then create an ingress resource. The following example assumes that you have set up a DNS record for `www.demo.io`:
112+
It will be the `EXTERNAL-IP` field. If that field shows `<pending>`, this means that your Kubernetes cluster wasn't able to provision the load balancer (generally, this is because it doesn't support services of type `LoadBalancer`).
113+
114+
Once you have the external IP address (or FQDN), set up a DNS record pointing to it. Then you can create an ingress resource. The following example assumes that you have set up a DNS record for `www.demo.io`:
113115

114116
```console
115117
kubectl create ingress demo --class=nginx \
@@ -154,6 +156,8 @@ Kubernetes is available in Docker Desktop:
154156
- Mac, from [version 18.06.0-ce](https://docs.docker.com/docker-for-mac/release-notes/#stable-releases-of-2018)
155157
- Windows, from [version 18.06.0-ce](https://docs.docker.com/docker-for-windows/release-notes/#docker-community-edition-18060-ce-win70-2018-07-25)
156158

159+
First, make sure that Kubernetes is enabled in the Docker settings. The command `kubectl get nodes` should show a single node called `docker-destkop`.
160+
157161
The ingress controller can be installed on Docker Desktop using the default [quick start](#quick-start) instructions.
158162

159163
On most systems, if you don't have any other service of type `LoadBalancer` bound to port 80, the ingress controller will be assigned the `EXTERNAL-IP` of `localhost`, which means that it will be reachable on localhost:80. If that doesn't work, you might have to fall back to the `kubectl port-forward` method described in the [local testing section](#local-testing).
@@ -182,31 +186,27 @@ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/cont
182186

183187
##### TLS termination in AWS Load Balancer (NLB)
184188

185-
In some scenarios is required to terminate TLS in the Load Balancer and not in the ingress controller.
186-
187-
For this purpose we provide a template:
189+
By default, TLS is terminated in the ingress controller. But it is also possible to terminate TLS in the Load Balancer. This section explains how to do that on AWS with using an NLB.
188190

189-
- Download [deploy-tls-termination.yaml](https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.0/deploy/static/provider/aws/deploy-tls-termination.yaml)
191+
1. Download the the [deploy-tls-termination.yaml](https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.0/deploy/static/provider/aws/deploy-tls-termination.yaml) template:
192+
```console
193+
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.0/deploy/static/provider/aws/deploy-tls-termination.yaml
194+
```
190195

191-
```console
192-
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.0/deploy/static/provider/aws/deploy-tls-termination.yaml
193-
```
194-
195-
- Edit the file and change:
196-
197-
- VPC CIDR in use for the Kubernetes cluster:
196+
2. Edit the file and change the VPC CIDR in use for the Kubernetes cluster:
197+
```
198+
proxy-real-ip-cidr: XXX.XXX.XXX/XX
199+
```
198200

199-
`proxy-real-ip-cidr: XXX.XXX.XXX/XX`
201+
3. Change the AWS Certificate Manager (ACM) ID as well:
202+
```
203+
arn:aws:acm:us-west-2:XXXXXXXX:certificate/XXXXXX-XXXXXXX-XXXXXXX-XXXXXXXX
204+
```
200205

201-
- AWS Certificate Manager (ACM) ID
202-
203-
`arn:aws:acm:us-west-2:XXXXXXXX:certificate/XXXXXX-XXXXXXX-XXXXXXX-XXXXXXXX`
204-
205-
- Deploy the manifest:
206-
207-
```console
208-
kubectl apply -f deploy-tls-termination.yaml
209-
```
206+
4. Deploy the manifest:
207+
```console
208+
kubectl apply -f deploy-tls-termination.yaml
209+
```
210210

211211
##### NLB Idle Timeouts
212212

@@ -220,26 +220,28 @@ More information with regards to timeouts can be found in the [official AWS docu
220220

221221
#### GCE-GKE
222222

223-
!!! info
224-
Initialize your user as a cluster-admin with the following command:
225-
```console
226-
kubectl create clusterrolebinding cluster-admin-binding \
227-
--clusterrole cluster-admin \
228-
--user $(gcloud config get-value account)
229-
```
230-
231-
!!! danger
232-
For private clusters, you will need to either add an additional firewall rule that allows master nodes access to port `8443/tcp` on worker nodes, or change the existing rule that allows access to ports `80/tcp`, `443/tcp` and `10254/tcp` to also allow access to port `8443/tcp`.
223+
First, your user needs to have `cluster-admin` permissions on the cluster. This can be done with the following command:
233224

234-
See the [GKE documentation](https://cloud.google.com/kubernetes-engine/docs/how-to/private-clusters#add_firewall_rules) on adding rules and the [Kubernetes issue](https://github.com/kubernetes/kubernetes/issues/79739) for more detail.
225+
```console
226+
kubectl create clusterrolebinding cluster-admin-binding \
227+
--clusterrole cluster-admin \
228+
--user $(gcloud config get-value account)
229+
```
230+
231+
Then, the ingress controller can be installed like this:
235232

236233

237234
```console
238235
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.0/deploy/static/provider/cloud/deploy.yaml
239236
```
240237

241-
!!! failure Important
242-
Proxy protocol is not supported in GCE/GKE
238+
!!! warning
239+
For private clusters, you will need to either add an additional firewall rule that allows master nodes access to port `8443/tcp` on worker nodes, or change the existing rule that allows access to ports `80/tcp`, `443/tcp` and `10254/tcp` to also allow access to port `8443/tcp`.
240+
241+
See the [GKE documentation](https://cloud.google.com/kubernetes-engine/docs/how-to/private-clusters#add_firewall_rules) on adding rules and the [Kubernetes issue](https://github.com/kubernetes/kubernetes/issues/79739) for more detail.
242+
243+
!!! warning
244+
Proxy protocol is not supported in GCE/GKE.
243245

244246
#### Azure
245247

@@ -279,17 +281,15 @@ A [complete list of available annotations for Oracle Cloud Infrastructure](https
279281

280282
### Bare metal clusters
281283

282-
Using [NodePort](https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport):
284+
This section is applicable to Kubernetes clusters deployed on bare metal servers, as well as "raw" VMs where Kubernetes was installed manually, using generic Linux distros (like CentOS, Ubuntu...)
285+
286+
For quick testing, you can use a [NodePort](https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport). This should work on almost every cluster, but it will typically use a port in the range 30000-32767.
283287

284288
```console
285289
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.0/deploy/static/provider/baremetal/deploy.yaml
286290
```
287291

288-
!!! tip
289-
Applicable on kubernetes clusters deployed on bare-metal with generic Linux distro(Such as CentOs, Ubuntu ...).
290-
291-
!!! info
292-
For extended notes regarding deployments on bare-metal, see [Bare-metal considerations](./baremetal.md).
292+
For more information about bare metal deployments (and how to use port 80 instead of a random port in the 30000-32767 range), see [bare-metal considerations](./baremetal.md).
293293

294294
## Miscellaneous
295295

0 commit comments

Comments
 (0)