diff --git a/controllers/nginx/configuration.md b/controllers/nginx/configuration.md index c13ea11a8..cbdeea2e3 100644 --- a/controllers/nginx/configuration.md +++ b/controllers/nginx/configuration.md @@ -31,7 +31,7 @@ There are 3 ways to customize NGINX: It is possible to customize the defaults in NGINX using a ConfigMap. -Please check the [custom configuration](examples/custom-configuration/README.md) example. +Please check the [custom configuration](examples/customization/custom-configuration/nginx/README.md) example. #### Annotations diff --git a/examples/customization/custom-configuration/nginx/README.md b/examples/customization/custom-configuration/nginx/README.md new file mode 100644 index 000000000..93acf6737 --- /dev/null +++ b/examples/customization/custom-configuration/nginx/README.md @@ -0,0 +1,24 @@ + +Using a [ConfigMap](https://kubernetes.io/docs/user-guide/configmap/) is possible to customize the NGINX configuration + +For example, if we want to change the timeouts we need to create a ConfigMap: + +``` +$ cat nginx-load-balancer-conf.yaml +apiVersion: v1 +data: + proxy-connect-timeout: "10" + proxy-read-timeout: "120" + proxy-send-timeout: "120" +kind: ConfigMap +metadata: + name: nginx-load-balancer-conf +``` + +``` +$ kubectl create -f nginx-load-balancer-conf.yaml +``` + +Please check the example `nginx-custom-configuration.yaml` + +If the Configmap it is updated, NGINX will be reloaded with the new configuration. diff --git a/examples/customization/custom-configuration/nginx/nginx-custom-configuration.yaml b/examples/customization/custom-configuration/nginx/nginx-custom-configuration.yaml new file mode 100644 index 000000000..a6546ddf1 --- /dev/null +++ b/examples/customization/custom-configuration/nginx/nginx-custom-configuration.yaml @@ -0,0 +1,56 @@ +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: nginx-ingress-controller + labels: + k8s-app: nginx-ingress-controller + namespace: kube-system +spec: + replicas: 1 + template: + metadata: + labels: + k8s-app: nginx-ingress-controller + annotations: + prometheus.io/port: '10254' + prometheus.io/scrape: 'true' + spec: + # hostNetwork makes it possible to use ipv6 and to preserve the source IP correctly regardless of docker configuration + # however, it is not a hard dependency of the nginx-ingress-controller itself and it may cause issues if port 10254 already is taken on the host + # that said, since hostPort is broken on CNI (https://github.com/kubernetes/kubernetes/issues/31307) we have to use hostNetwork where CNI is used + # like with kubeadm + # hostNetwork: true + terminationGracePeriodSeconds: 60 + containers: + - image: gcr.io/google_containers/nginx-ingress-controller:0.9.0-beta.3 + name: nginx-ingress-controller + readinessProbe: + httpGet: + path: /healthz + port: 10254 + scheme: HTTP + livenessProbe: + httpGet: + path: /healthz + port: 10254 + scheme: HTTP + initialDelaySeconds: 10 + timeoutSeconds: 1 + ports: + - containerPort: 80 + hostPort: 80 + - containerPort: 443 + hostPort: 443 + env: + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name + - name: POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + args: + - /nginx-ingress-controller + - --default-backend-service=$(POD_NAMESPACE)/default-http-backend + - --configmap=$(POD_NAMESPACE)/nginx-custom-configuration diff --git a/examples/customization/custom-configuration/nginx/nginx-load-balancer-conf.yaml b/examples/customization/custom-configuration/nginx/nginx-load-balancer-conf.yaml new file mode 100644 index 000000000..afd63d06d --- /dev/null +++ b/examples/customization/custom-configuration/nginx/nginx-load-balancer-conf.yaml @@ -0,0 +1,8 @@ +apiVersion: v1 +data: + proxy-connect-timeout: "10" + proxy-read-timeout: "120" + proxy-send-timeout: "120" +kind: ConfigMap +metadata: + name: nginx-custom-configuration