Merge commit '36a8134cf1f55fd5f6989ef42d1c73c5448bf0b0'
This commit is contained in:
commit
860812a222
23 changed files with 222 additions and 52 deletions
65
Changelog.md
65
Changelog.md
|
@ -1,5 +1,70 @@
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
### 0.29.0
|
||||||
|
|
||||||
|
**Image:** `quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.29.0`
|
||||||
|
|
||||||
|
_New Features:_
|
||||||
|
|
||||||
|
- NGINX 1.17.8
|
||||||
|
- Add SameSite support for [Cookie Affinity](https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#cookie-affinity) https://www.chromium.org/updates/same-site
|
||||||
|
- Refactor of [mirror](https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#mirror) feature to remove additional annotations
|
||||||
|
|
||||||
|
_Changes:_
|
||||||
|
|
||||||
|
- [X] [#4949](https://github.com/kubernetes/ingress-nginx/pull/4949) Add SameSite support - omit None for old browsers
|
||||||
|
- [X] [#4973](https://github.com/kubernetes/ingress-nginx/pull/4973) Fix release script
|
||||||
|
- [X] [#4975](https://github.com/kubernetes/ingress-nginx/pull/4975) Fix docker installation in travis script
|
||||||
|
- [X] [#4976](https://github.com/kubernetes/ingress-nginx/pull/4976) Fix travis
|
||||||
|
- [X] [#4977](https://github.com/kubernetes/ingress-nginx/pull/4977) Fix image version
|
||||||
|
- [X] [#4983](https://github.com/kubernetes/ingress-nginx/pull/4983) Fix enable opentracing per location
|
||||||
|
- [X] [#4987](https://github.com/kubernetes/ingress-nginx/pull/4987) Dump kind logs after e2e tests
|
||||||
|
- [X] [#4993](https://github.com/kubernetes/ingress-nginx/pull/4993) Calculation algorithm for server_names_hash_bucket_size should consid…
|
||||||
|
- [X] [#4995](https://github.com/kubernetes/ingress-nginx/pull/4995) Cleanup main makefile and remove the need of sed
|
||||||
|
- [X] [#4996](https://github.com/kubernetes/ingress-nginx/pull/4996) Fix status update for clusters where networking.k8s.io is not available
|
||||||
|
- [X] [#4999](https://github.com/kubernetes/ingress-nginx/pull/4999) Fix limitrange definition
|
||||||
|
- [X] [#5000](https://github.com/kubernetes/ingress-nginx/pull/5000) Update python syntax in OAuth2 example
|
||||||
|
- [X] [#5003](https://github.com/kubernetes/ingress-nginx/pull/5003) Fix server aliases
|
||||||
|
- [X] [#5008](https://github.com/kubernetes/ingress-nginx/pull/5008) Fix docker buildx check in Makefile
|
||||||
|
- [X] [#5009](https://github.com/kubernetes/ingress-nginx/pull/5009) Move mod-security logic from template to go code
|
||||||
|
- [X] [#5010](https://github.com/kubernetes/ingress-nginx/pull/5010) Update nginx image
|
||||||
|
- [X] [#5011](https://github.com/kubernetes/ingress-nginx/pull/5011) Update nginx image, go to 1.13.7 and e2e image
|
||||||
|
- [X] [#5015](https://github.com/kubernetes/ingress-nginx/pull/5015) Refactor mirror feature
|
||||||
|
- [X] [#5016](https://github.com/kubernetes/ingress-nginx/pull/5016) Fix dep-ensure task
|
||||||
|
- [X] [#5023](https://github.com/kubernetes/ingress-nginx/pull/5023) Update metric dependencies and restore default Objectives
|
||||||
|
- [X] [#5028](https://github.com/kubernetes/ingress-nginx/pull/5028) Add echo image to avoid building and installing dependencies in each …
|
||||||
|
- [X] [#5031](https://github.com/kubernetes/ingress-nginx/pull/5031) Update kindest/node version to v1.17.2
|
||||||
|
- [X] [#5032](https://github.com/kubernetes/ingress-nginx/pull/5032) Fix fortune-teller app manifest
|
||||||
|
- [X] [#5035](https://github.com/kubernetes/ingress-nginx/pull/5035) Update github.com/paultag/sniff dependency
|
||||||
|
- [X] [#5036](https://github.com/kubernetes/ingress-nginx/pull/5036) Disable DIND in script run-in-docker.sh
|
||||||
|
- [X] [#5038](https://github.com/kubernetes/ingress-nginx/pull/5038) Update code to use pault.ag/go/sniff package
|
||||||
|
- [X] [#5042](https://github.com/kubernetes/ingress-nginx/pull/5042) Fix X-Forwarded-Proto based on proxy-protocol server port
|
||||||
|
- [X] [#5050](https://github.com/kubernetes/ingress-nginx/pull/5050) Add flag to allow custom ingress status update intervals
|
||||||
|
- [X] [#5052](https://github.com/kubernetes/ingress-nginx/pull/5052) Change the handling of ConfigMap creation
|
||||||
|
- [X] [#5053](https://github.com/kubernetes/ingress-nginx/pull/5053) Validation of header in authreq should be done only in the key
|
||||||
|
- [X] [#5055](https://github.com/kubernetes/ingress-nginx/pull/5055) Only set mirror source when a target is configured
|
||||||
|
- [X] [#5059](https://github.com/kubernetes/ingress-nginx/pull/5059) Remove minikube and only use kind
|
||||||
|
- [X] [#5060](https://github.com/kubernetes/ingress-nginx/pull/5060) Cleanup e2e tests
|
||||||
|
- [X] [#5061](https://github.com/kubernetes/ingress-nginx/pull/5061) Fix scripts to run in osx
|
||||||
|
- [X] [#5062](https://github.com/kubernetes/ingress-nginx/pull/5062) Ensure scripts and dev-env works in osx
|
||||||
|
- [X] [#5067](https://github.com/kubernetes/ingress-nginx/pull/5067) Make sure set-cookie is retained from external auth endpoint
|
||||||
|
- [X] [#5069](https://github.com/kubernetes/ingress-nginx/pull/5069) Enable grpc e2e tests
|
||||||
|
- [X] [#5070](https://github.com/kubernetes/ingress-nginx/pull/5070) Update go to 1.13.8
|
||||||
|
- [X] [#5071](https://github.com/kubernetes/ingress-nginx/pull/5071) Add gzip-min-length as a Configuration Option
|
||||||
|
|
||||||
|
_Documentation:_
|
||||||
|
|
||||||
|
- [X] [#4974](https://github.com/kubernetes/ingress-nginx/pull/4974) Add travis script for docs
|
||||||
|
- [X] [#4991](https://github.com/kubernetes/ingress-nginx/pull/4991) doc: added hint why regular expressions might not be accepted
|
||||||
|
- [X] [#5018](https://github.com/kubernetes/ingress-nginx/pull/5018) Update developer document on dependency updates
|
||||||
|
- [X] [#5020](https://github.com/kubernetes/ingress-nginx/pull/5020) docs(deploy): fix helm install command for helm v3
|
||||||
|
- [X] [#5037](https://github.com/kubernetes/ingress-nginx/pull/5037) Cleanup README.md
|
||||||
|
- [X] [#5040](https://github.com/kubernetes/ingress-nginx/pull/5040) Update documentation and remove hack fixed by upstream cookie library
|
||||||
|
- [X] [#5041](https://github.com/kubernetes/ingress-nginx/pull/5041) 36.94% size reduction of image assets using lossless compression from ImgBot
|
||||||
|
- [X] [#5043](https://github.com/kubernetes/ingress-nginx/pull/5043) Cleanup docs
|
||||||
|
- [X] [#5068](https://github.com/kubernetes/ingress-nginx/pull/5068) docs: reference buildx as a requirement for docker builds
|
||||||
|
- [X] [#5073](https://github.com/kubernetes/ingress-nginx/pull/5073) oauth-external-auth: README.md: Link to oauth2-proxy, dashboard-ingress.yaml
|
||||||
|
|
||||||
### 0.28.0
|
### 0.28.0
|
||||||
|
|
||||||
**Image:** `quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.28.0`
|
**Image:** `quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.28.0`
|
||||||
|
|
2
Makefile
2
Makefile
|
@ -27,7 +27,7 @@ endif
|
||||||
SHELL=/bin/bash -o pipefail
|
SHELL=/bin/bash -o pipefail
|
||||||
|
|
||||||
# Use the 0.0 tag for testing, it shouldn't clobber any release builds
|
# Use the 0.0 tag for testing, it shouldn't clobber any release builds
|
||||||
TAG ?= 0.28.0
|
TAG ?= 0.29.0
|
||||||
|
|
||||||
# Use docker to run makefile tasks
|
# Use docker to run makefile tasks
|
||||||
USE_DOCKER ?= true
|
USE_DOCKER ?= true
|
||||||
|
|
|
@ -80,19 +80,18 @@ git clone https://github.com/kubernetes/ingress-nginx
|
||||||
|
|
||||||
cd ingress-nginx
|
cd ingress-nginx
|
||||||
|
|
||||||
# disable docker in docker tasks
|
|
||||||
export DIND_TASKS=0
|
|
||||||
|
|
||||||
export DOCKER_CLI_EXPERIMENTAL=enabled
|
export DOCKER_CLI_EXPERIMENTAL=enabled
|
||||||
|
|
||||||
make init-docker-buildx
|
make init-docker-buildx
|
||||||
docker buildx use ingress-nginx --default --global
|
docker buildx use ingress-nginx --default --global
|
||||||
|
|
||||||
echo "Building NGINX image..."
|
# disable docker in docker tasks
|
||||||
make all-container
|
export DIND_TASKS=0
|
||||||
|
|
||||||
echo "Publishing NGINX images..."
|
echo "Building NGINX image..."
|
||||||
make all-push
|
ARCH=amd64 make build container push
|
||||||
|
ARCH=arm make build container push
|
||||||
|
ARCH=arm64 make build container push
|
||||||
|
|
||||||
# Requires https://github.com/kubernetes/ingress-nginx/pull/4271
|
# Requires https://github.com/kubernetes/ingress-nginx/pull/4271
|
||||||
#echo "Creating multi-arch images..."
|
#echo "Creating multi-arch images..."
|
||||||
|
|
|
@ -15,7 +15,7 @@ spec:
|
||||||
serviceAccountName: nginx-ingress-serviceaccount
|
serviceAccountName: nginx-ingress-serviceaccount
|
||||||
containers:
|
containers:
|
||||||
- name: nginx-ingress-controller
|
- name: nginx-ingress-controller
|
||||||
image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.28.0
|
image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.29.0
|
||||||
args:
|
args:
|
||||||
- /nginx-ingress-controller
|
- /nginx-ingress-controller
|
||||||
- --configmap=$(POD_NAMESPACE)/$(NGINX_CONFIGMAP_NAME)
|
- --configmap=$(POD_NAMESPACE)/$(NGINX_CONFIGMAP_NAME)
|
||||||
|
|
|
@ -12,7 +12,7 @@ resources:
|
||||||
- service.yaml
|
- service.yaml
|
||||||
images:
|
images:
|
||||||
- name: quay.io/kubernetes-ingress-controller/nginx-ingress-controller
|
- name: quay.io/kubernetes-ingress-controller/nginx-ingress-controller
|
||||||
newTag: 0.28.0
|
newTag: 0.29.0
|
||||||
vars:
|
vars:
|
||||||
- fieldref:
|
- fieldref:
|
||||||
fieldPath: metadata.name
|
fieldPath: metadata.name
|
||||||
|
|
|
@ -217,7 +217,7 @@ spec:
|
||||||
kubernetes.io/os: linux
|
kubernetes.io/os: linux
|
||||||
containers:
|
containers:
|
||||||
- name: nginx-ingress-controller
|
- name: nginx-ingress-controller
|
||||||
image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.28.0
|
image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.29.0
|
||||||
args:
|
args:
|
||||||
- /nginx-ingress-controller
|
- /nginx-ingress-controller
|
||||||
- --configmap=$(POD_NAMESPACE)/nginx-configuration
|
- --configmap=$(POD_NAMESPACE)/nginx-configuration
|
||||||
|
|
|
@ -28,7 +28,7 @@ spec:
|
||||||
kubernetes.io/os: linux
|
kubernetes.io/os: linux
|
||||||
containers:
|
containers:
|
||||||
- name: nginx-ingress-controller
|
- name: nginx-ingress-controller
|
||||||
image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.28.0
|
image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.29.0
|
||||||
args:
|
args:
|
||||||
- /nginx-ingress-controller
|
- /nginx-ingress-controller
|
||||||
- --configmap=$(POD_NAMESPACE)/nginx-configuration
|
- --configmap=$(POD_NAMESPACE)/nginx-configuration
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
The following **Mandatory Command** is required for all deployments.
|
The following **Mandatory Command** is required for all deployments.
|
||||||
|
|
||||||
```console
|
```console
|
||||||
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.28.0/deploy/static/mandatory.yaml
|
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.29.0/deploy/static/mandatory.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
!!! tip
|
!!! tip
|
||||||
|
@ -53,7 +53,7 @@ Kubernetes is available in Docker for Mac (from [version 18.06.0-ce](https://doc
|
||||||
Create a service
|
Create a service
|
||||||
|
|
||||||
```console
|
```console
|
||||||
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.28.0/deploy/static/provider/cloud-generic.yaml
|
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.29.0/deploy/static/provider/cloud-generic.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
#### minikube
|
#### minikube
|
||||||
|
@ -101,8 +101,8 @@ Check that no change is necessary with regards to the ELB idle timeout. In some
|
||||||
Then execute:
|
Then execute:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.28.0/deploy/static/provider/aws/service-l4.yaml
|
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.29.0/deploy/static/provider/aws/service-l4.yaml
|
||||||
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.28.0/deploy/static/provider/aws/patch-configmap-l4.yaml
|
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.29.0/deploy/static/provider/aws/patch-configmap-l4.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
For L7:
|
For L7:
|
||||||
|
@ -114,8 +114,8 @@ Check that no change is necessary with regards to the ELB idle timeout. In some
|
||||||
Then execute:
|
Then execute:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.28.0/deploy/static/provider/aws/service-l7.yaml
|
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.29.0/deploy/static/provider/aws/service-l7.yaml
|
||||||
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.28.0/deploy/static/provider/aws/patch-configmap-l7.yaml
|
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.29.0/deploy/static/provider/aws/patch-configmap-l7.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
This example creates an ELB with just two listeners, one in port 80 and another in port 443
|
This example creates an ELB with just two listeners, one in port 80 and another in port 443
|
||||||
|
@ -136,13 +136,13 @@ More information with regards to idle timeouts for your Load Balancer can be fou
|
||||||
This type of load balancer is supported since v1.10.0 as an ALPHA feature.
|
This type of load balancer is supported since v1.10.0 as an ALPHA feature.
|
||||||
|
|
||||||
```console
|
```console
|
||||||
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.28.0/deploy/static/provider/aws/service-nlb.yaml
|
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.29.0/deploy/static/provider/aws/service-nlb.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
#### GCE-GKE
|
#### GCE-GKE
|
||||||
|
|
||||||
```console
|
```console
|
||||||
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.28.0/deploy/static/provider/cloud-generic.yaml
|
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.29.0/deploy/static/provider/cloud-generic.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
**Important Note:** proxy protocol is not supported in GCE/GKE
|
**Important Note:** proxy protocol is not supported in GCE/GKE
|
||||||
|
@ -150,7 +150,7 @@ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/ngin
|
||||||
#### Azure
|
#### Azure
|
||||||
|
|
||||||
```console
|
```console
|
||||||
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.28.0/deploy/static/provider/cloud-generic.yaml
|
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.29.0/deploy/static/provider/cloud-generic.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Bare-metal
|
#### Bare-metal
|
||||||
|
@ -158,7 +158,7 @@ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/ngin
|
||||||
Using [NodePort](https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport):
|
Using [NodePort](https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport):
|
||||||
|
|
||||||
```console
|
```console
|
||||||
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.28.0/deploy/static/provider/baremetal/service-nodeport.yaml
|
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.29.0/deploy/static/provider/baremetal/service-nodeport.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
!!! tip
|
!!! tip
|
||||||
|
|
|
@ -33,7 +33,7 @@ The easiest way to do this is e.g. (do note you may need to change the name para
|
||||||
|
|
||||||
```
|
```
|
||||||
kubectl set image deployment/nginx-ingress-controller \
|
kubectl set image deployment/nginx-ingress-controller \
|
||||||
nginx-ingress-controller=quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.28.0
|
nginx-ingress-controller=quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.29.0
|
||||||
```
|
```
|
||||||
|
|
||||||
For interactive editing, use `kubectl edit deployment nginx-ingress-controller`.
|
For interactive editing, use `kubectl edit deployment nginx-ingress-controller`.
|
||||||
|
|
|
@ -51,13 +51,13 @@ kubectl create -f https://raw.githubusercontent.com/kubernetes/kops/master/addon
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
3. Configure oauth2_proxy values in the file oauth2-proxy.yaml with the values:
|
3. Configure oauth2_proxy values in the file [`oauth2-proxy.yaml`](https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/docs/examples/auth/oauth-external-auth/oauth2-proxy.yaml) with the values:
|
||||||
|
|
||||||
- OAUTH2_PROXY_CLIENT_ID with the github `<Client ID>`
|
- OAUTH2_PROXY_CLIENT_ID with the github `<Client ID>`
|
||||||
- OAUTH2_PROXY_CLIENT_SECRET with the github `<Client Secret>`
|
- OAUTH2_PROXY_CLIENT_SECRET with the github `<Client Secret>`
|
||||||
- OAUTH2_PROXY_COOKIE_SECRET with value of `python -c 'import os,base64; print(base64.b64encode(os.urandom(16)).decode("ascii"))'`
|
- OAUTH2_PROXY_COOKIE_SECRET with value of `python -c 'import os,base64; print(base64.b64encode(os.urandom(16)).decode("ascii"))'`
|
||||||
|
|
||||||
4. Customize the contents of the file dashboard-ingress.yaml:
|
4. Customize the contents of the file [`dashboard-ingress.yaml`](https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/docs/examples/auth/oauth-external-auth/dashboard-ingress.yaml):
|
||||||
|
|
||||||
Replace `__INGRESS_HOST__` with a valid FQDN and `__INGRESS_SECRET__` with a Secret with a valid SSL certificate.
|
Replace `__INGRESS_HOST__` with a valid FQDN and `__INGRESS_SECRET__` with a Secret with a valid SSL certificate.
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@ service/nginx-errors ClusterIP 10.0.0.12 <none> 80/TCP 10s
|
||||||
If you do not already have an instance of the NGINX Ingress controller running, deploy it according to the
|
If you do not already have an instance of the NGINX Ingress controller running, deploy it according to the
|
||||||
[deployment guide][deploy], then follow these steps:
|
[deployment guide][deploy], then follow these steps:
|
||||||
|
|
||||||
1. Edit the `nginx-ingress-controller` Deployment and set the value of the `--default-backend` flag to the name of the
|
1. Edit the `nginx-ingress-controller` Deployment and set the value of the `--default-backend-service` flag to the name of the
|
||||||
newly created error backend.
|
newly created error backend.
|
||||||
|
|
||||||
2. Edit the `nginx-configuration` ConfigMap and create the key `custom-http-errors` with a value of `404,503`.
|
2. Edit the `nginx-configuration` ConfigMap and create the key `custom-http-errors` with a value of `404,503`.
|
||||||
|
|
|
@ -13,7 +13,7 @@ nginx controller.
|
||||||
for the ingress).
|
for the ingress).
|
||||||
3. You have the nginx-ingress controller installed in typical fashion (must be
|
3. You have the nginx-ingress controller installed in typical fashion (must be
|
||||||
at least
|
at least
|
||||||
[quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.28.0](https://quay.io/kubernetes-ingress-controller/nginx-ingress-controller)
|
[quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.29.0](https://quay.io/kubernetes-ingress-controller/nginx-ingress-controller)
|
||||||
for grpc support.
|
for grpc support.
|
||||||
4. You have a backend application running a gRPC server and listening for TCP
|
4. You have a backend application running a gRPC server and listening for TCP
|
||||||
traffic. If you prefer, you can use the
|
traffic. If you prefer, you can use the
|
||||||
|
|
|
@ -15,7 +15,7 @@ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/mast
|
||||||
```
|
```
|
||||||
|
|
||||||
Now that the pod security policy is applied, we can continue as usual by applying the
|
Now that the pod security policy is applied, we can continue as usual by applying the
|
||||||
[mandatory.yaml](https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.28.0/deploy/static/mandatory.yaml)
|
[mandatory.yaml](https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.29.0/deploy/static/mandatory.yaml)
|
||||||
according to the [Installation Guide](../../deploy/index.md).
|
according to the [Installation Guide](../../deploy/index.md).
|
||||||
|
|
||||||
Note: PSP permissions must be granted before to the creation of the Deployment and the ReplicaSet.
|
Note: PSP permissions must be granted before to the creation of the Deployment and the ReplicaSet.
|
||||||
|
|
|
@ -24,7 +24,7 @@ spec:
|
||||||
# hostNetwork: true
|
# hostNetwork: true
|
||||||
terminationGracePeriodSeconds: 60
|
terminationGracePeriodSeconds: 60
|
||||||
containers:
|
containers:
|
||||||
- image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.28.0
|
- image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.29.0
|
||||||
name: nginx-ingress-controller
|
name: nginx-ingress-controller
|
||||||
readinessProbe:
|
readinessProbe:
|
||||||
httpGet:
|
httpGet:
|
||||||
|
|
|
@ -596,6 +596,10 @@ Enables or disables [HTTP/2](http://nginx.org/en/docs/http/ngx_http_v2_module.ht
|
||||||
|
|
||||||
Sets the gzip Compression Level that will be used. _**default:**_ 5
|
Sets the gzip Compression Level that will be used. _**default:**_ 5
|
||||||
|
|
||||||
|
## gzip-min-length
|
||||||
|
|
||||||
|
Minimum length of responses to be returned to the client before it is eligible for gzip compression, in bytes. _**default:**_ 256
|
||||||
|
|
||||||
## gzip-types
|
## gzip-types
|
||||||
|
|
||||||
Sets the MIME types in addition to "text/html" to compress. The special value "\*" matches any MIME type. Responses with the "text/html" type are always compressed if `[use-gzip](#use-gzip)` is enabled.
|
Sets the MIME types in addition to "text/html" to compress. The special value "\*" matches any MIME type. Responses with the "text/html" type are always compressed if `[use-gzip](#use-gzip)` is enabled.
|
||||||
|
|
Binary file not shown.
|
@ -12,8 +12,13 @@
|
||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
|
.DEFAULT_GOAL:=container
|
||||||
|
|
||||||
|
# set default shell
|
||||||
|
SHELL=/bin/bash -o pipefail
|
||||||
|
|
||||||
# 0.0.0 shouldn't clobber any released builds
|
# 0.0.0 shouldn't clobber any released builds
|
||||||
TAG ?= 0.97
|
TAG ?= 0.98
|
||||||
REGISTRY ?= quay.io/kubernetes-ingress-controller
|
REGISTRY ?= quay.io/kubernetes-ingress-controller
|
||||||
|
|
||||||
IMGNAME = nginx
|
IMGNAME = nginx
|
||||||
|
@ -25,39 +30,26 @@ EMPTY :=
|
||||||
SPACE := $(EMPTY) $(EMPTY)
|
SPACE := $(EMPTY) $(EMPTY)
|
||||||
COMMA := ,
|
COMMA := ,
|
||||||
|
|
||||||
.PHONY: all
|
|
||||||
all: container
|
|
||||||
|
|
||||||
.PHONY: container
|
.PHONY: container
|
||||||
container:
|
container:
|
||||||
DOCKER_CLI_EXPERIMENTAL=enabled docker buildx build \
|
DOCKER_CLI_EXPERIMENTAL=enabled docker buildx build \
|
||||||
--no-cache \
|
|
||||||
--progress plain \
|
--progress plain \
|
||||||
--platform $(subst $(SPACE),$(COMMA),$(PLATFORMS)) \
|
--platform $(subst $(SPACE),$(COMMA),$(PLATFORMS)) \
|
||||||
--tag $(IMAGE):$(TAG) rootfs
|
--tag $(IMAGE):$(TAG) rootfs
|
||||||
|
|
||||||
# https://github.com/docker/buildx/issues/59
|
# https://github.com/docker/buildx/issues/59
|
||||||
$(foreach PLATFORM,$(PLATFORMS), \
|
$(foreach PLATFORM,$(PLATFORMS), \
|
||||||
DOCKER_CLI_EXPERIMENTAL=enabled docker buildx build \
|
DOCKER_CLI_EXPERIMENTAL=enabled docker buildx build \
|
||||||
--load \
|
--load \
|
||||||
--progress plain \
|
--progress plain \
|
||||||
--platform $(PLATFORM) \
|
--platform $(PLATFORM) \
|
||||||
--tag $(IMAGE)-$(PLATFORM):$(TAG) rootfs;)
|
--tag $(IMAGE)-$(PLATFORM):$(TAG) rootfs;)
|
||||||
|
|
||||||
ifeq ($(ARCH), amd64)
|
|
||||||
# This is for to maintain the backward compatibility
|
|
||||||
docker tag $(MULTI_ARCH_IMG):$(TAG) $(IMAGE):$(TAG)
|
|
||||||
endif
|
|
||||||
|
|
||||||
.PHONY: push
|
.PHONY: push
|
||||||
push: container
|
push: container
|
||||||
$(foreach PLATFORM,$(PLATFORMS), \
|
$(foreach PLATFORM,$(PLATFORMS), \
|
||||||
docker push $(IMAGE)-$(PLATFORM):$(TAG);)
|
docker push $(IMAGE)-$(PLATFORM):$(TAG);)
|
||||||
|
|
||||||
ifeq ($(ARCH), amd64)
|
|
||||||
docker push $(IMAGE):$(TAG)
|
|
||||||
endif
|
|
||||||
|
|
||||||
.PHONY: release
|
.PHONY: release
|
||||||
release: push
|
release: push
|
||||||
echo "done"
|
echo "done"
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
|
|
||||||
FROM --platform=$BUILDPLATFORM alpine:3.11 as builder
|
FROM alpine:3.11 as builder
|
||||||
|
|
||||||
COPY . /
|
COPY . /
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ RUN apk add -U bash \
|
||||||
&& /build.sh
|
&& /build.sh
|
||||||
|
|
||||||
# Use a multi-stage build
|
# Use a multi-stage build
|
||||||
FROM --platform=$BUILDPLATFORM alpine:3.11
|
FROM alpine:3.11
|
||||||
|
|
||||||
ENV PATH=$PATH:/usr/local/luajit/bin:/usr/local/nginx/sbin:/usr/local/nginx/bin
|
ENV PATH=$PATH:/usr/local/luajit/bin:/usr/local/nginx/sbin:/usr/local/nginx/bin
|
||||||
|
|
||||||
|
|
|
@ -393,6 +393,10 @@ type Configuration struct {
|
||||||
// gzip Compression Level that will be used
|
// gzip Compression Level that will be used
|
||||||
GzipLevel int `json:"gzip-level,omitempty"`
|
GzipLevel int `json:"gzip-level,omitempty"`
|
||||||
|
|
||||||
|
// Minimum length of responses to be sent to the client before it is eligible
|
||||||
|
// for gzip compression, in bytes.
|
||||||
|
GzipMinLength int `json:"gzip-min-length,omitempty"`
|
||||||
|
|
||||||
// MIME types in addition to "text/html" to compress. The special value “*” matches any MIME type.
|
// MIME types in addition to "text/html" to compress. The special value “*” matches any MIME type.
|
||||||
// Responses with the “text/html” type are always compressed if UseGzip is enabled
|
// Responses with the “text/html” type are always compressed if UseGzip is enabled
|
||||||
GzipTypes string `json:"gzip-types,omitempty"`
|
GzipTypes string `json:"gzip-types,omitempty"`
|
||||||
|
@ -695,6 +699,7 @@ func NewDefault() Configuration {
|
||||||
HSTSPreload: false,
|
HSTSPreload: false,
|
||||||
IgnoreInvalidHeaders: true,
|
IgnoreInvalidHeaders: true,
|
||||||
GzipLevel: 5,
|
GzipLevel: 5,
|
||||||
|
GzipMinLength: 256,
|
||||||
GzipTypes: gzipTypes,
|
GzipTypes: gzipTypes,
|
||||||
KeepAlive: 75,
|
KeepAlive: 75,
|
||||||
KeepAliveRequests: 100,
|
KeepAliveRequests: 100,
|
||||||
|
|
|
@ -65,6 +65,7 @@ func TestMergeConfigMapToStruct(t *testing.T) {
|
||||||
"error-log-path": "/var/log/test/error.log",
|
"error-log-path": "/var/log/test/error.log",
|
||||||
"use-gzip": "true",
|
"use-gzip": "true",
|
||||||
"gzip-level": "9",
|
"gzip-level": "9",
|
||||||
|
"gzip-min-length": "1024",
|
||||||
"gzip-types": "text/html",
|
"gzip-types": "text/html",
|
||||||
"proxy-real-ip-cidr": "1.1.1.1/8,2.2.2.2/24",
|
"proxy-real-ip-cidr": "1.1.1.1/8,2.2.2.2/24",
|
||||||
"bind-address": "1.1.1.1,2.2.2.2,3.3.3,2001:db8:a0b:12f0::1,3731:54:65fe:2::a7,33:33:33::33::33",
|
"bind-address": "1.1.1.1,2.2.2.2,3.3.3,2001:db8:a0b:12f0::1,3731:54:65fe:2::a7,33:33:33::33::33",
|
||||||
|
@ -85,6 +86,7 @@ func TestMergeConfigMapToStruct(t *testing.T) {
|
||||||
def.ProxySendTimeout = 2
|
def.ProxySendTimeout = 2
|
||||||
def.UseProxyProtocol = true
|
def.UseProxyProtocol = true
|
||||||
def.GzipLevel = 9
|
def.GzipLevel = 9
|
||||||
|
def.GzipMinLength = 1024
|
||||||
def.GzipTypes = "text/html"
|
def.GzipTypes = "text/html"
|
||||||
def.ProxyRealIPCIDR = []string{"1.1.1.1/8", "2.2.2.2/24"}
|
def.ProxyRealIPCIDR = []string{"1.1.1.1/8", "2.2.2.2/24"}
|
||||||
def.BindAddressIpv4 = []string{"1.1.1.1", "2.2.2.2"}
|
def.BindAddressIpv4 = []string{"1.1.1.1", "2.2.2.2"}
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
ARG BASE_IMAGE
|
ARG BASE_IMAGE
|
||||||
ARG VERSION
|
ARG VERSION
|
||||||
|
|
||||||
FROM --platform=$BUILDPLATFORM ${BASE_IMAGE}
|
FROM ${BASE_IMAGE}
|
||||||
|
|
||||||
LABEL org.opencontainers.image.title="NGINX Ingress Controller for Kubernetes"
|
LABEL org.opencontainers.image.title="NGINX Ingress Controller for Kubernetes"
|
||||||
LABEL org.opencontainers.image.documentation="https://kubernetes.github.io/ingress-nginx/"
|
LABEL org.opencontainers.image.documentation="https://kubernetes.github.io/ingress-nginx/"
|
||||||
|
|
|
@ -239,7 +239,7 @@ http {
|
||||||
gzip on;
|
gzip on;
|
||||||
gzip_comp_level {{ $cfg.GzipLevel }};
|
gzip_comp_level {{ $cfg.GzipLevel }};
|
||||||
gzip_http_version 1.1;
|
gzip_http_version 1.1;
|
||||||
gzip_min_length 256;
|
gzip_min_length {{ $cfg.GzipMinLength}};
|
||||||
gzip_types {{ $cfg.GzipTypes }};
|
gzip_types {{ $cfg.GzipTypes }};
|
||||||
gzip_proxied any;
|
gzip_proxied any;
|
||||||
gzip_vary on;
|
gzip_vary on;
|
||||||
|
|
103
test/e2e/settings/custom_header.go
Normal file
103
test/e2e/settings/custom_header.go
Normal file
|
@ -0,0 +1,103 @@
|
||||||
|
/*
|
||||||
|
Copyright 2020 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package settings
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net/http"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
. "github.com/onsi/ginkgo"
|
||||||
|
. "github.com/onsi/gomega"
|
||||||
|
"github.com/parnurzeal/gorequest"
|
||||||
|
|
||||||
|
"k8s.io/ingress-nginx/test/e2e/framework"
|
||||||
|
)
|
||||||
|
|
||||||
|
var _ = framework.IngressNginxDescribe("Add custom header", func() {
|
||||||
|
f := framework.NewDefaultFramework("custom-header")
|
||||||
|
host := "custom-header"
|
||||||
|
|
||||||
|
BeforeEach(func() {
|
||||||
|
f.NewEchoDeployment()
|
||||||
|
ing := framework.NewSingleIngress(host, "/", host, f.Namespace, framework.EchoService, 80, nil)
|
||||||
|
f.EnsureIngress(ing)
|
||||||
|
})
|
||||||
|
|
||||||
|
AfterEach(func() {
|
||||||
|
})
|
||||||
|
|
||||||
|
It("Add a custom header", func() {
|
||||||
|
customHeader := "X-A-Custom-Header"
|
||||||
|
customHeaderValue := "customHeaderValue"
|
||||||
|
|
||||||
|
h := make(map[string]string)
|
||||||
|
h[customHeader] = customHeaderValue
|
||||||
|
|
||||||
|
f.CreateConfigMap("add-headers-configmap", h)
|
||||||
|
|
||||||
|
wlKey := "add-headers"
|
||||||
|
wlValue := f.Namespace + "/add-headers-configmap"
|
||||||
|
|
||||||
|
f.UpdateNginxConfigMapData(wlKey, wlValue)
|
||||||
|
|
||||||
|
f.WaitForNginxConfiguration(func(server string) bool {
|
||||||
|
return strings.Contains(server, fmt.Sprintf("more_set_headers \"%s: %s\";", customHeader, customHeaderValue))
|
||||||
|
})
|
||||||
|
|
||||||
|
resp, _, errs := gorequest.New().
|
||||||
|
Get(f.GetURL(framework.HTTP)).
|
||||||
|
Set("Host", host).
|
||||||
|
End()
|
||||||
|
|
||||||
|
Expect(errs).Should(BeEmpty())
|
||||||
|
Expect(resp.StatusCode).Should(Equal(http.StatusOK))
|
||||||
|
Expect(resp.Header.Get(customHeader)).Should(ContainSubstring(customHeaderValue))
|
||||||
|
})
|
||||||
|
|
||||||
|
It("Add multiple custom headers", func() {
|
||||||
|
firstCustomHeader := "X-First"
|
||||||
|
firstCustomHeaderValue := "Prepare for trouble!"
|
||||||
|
secondCustomHeader := "X-Second"
|
||||||
|
secondCustomHeaderValue := "And make it double!"
|
||||||
|
|
||||||
|
h := make(map[string]string)
|
||||||
|
h[firstCustomHeader] = firstCustomHeaderValue
|
||||||
|
h[secondCustomHeader] = secondCustomHeaderValue
|
||||||
|
|
||||||
|
f.CreateConfigMap("add-headers-configmap-two", h)
|
||||||
|
|
||||||
|
wlKey := "add-headers"
|
||||||
|
wlValue := f.Namespace + "/add-headers-configmap-two"
|
||||||
|
|
||||||
|
f.UpdateNginxConfigMapData(wlKey, wlValue)
|
||||||
|
|
||||||
|
f.WaitForNginxConfiguration(func(server string) bool {
|
||||||
|
return strings.Contains(server, fmt.Sprintf("more_set_headers \"%s: %s\";", firstCustomHeader, firstCustomHeaderValue)) && strings.Contains(server, fmt.Sprintf("more_set_headers \"%s: %s\";", secondCustomHeader, secondCustomHeaderValue))
|
||||||
|
})
|
||||||
|
|
||||||
|
resp, _, errs := gorequest.New().
|
||||||
|
Get(f.GetURL(framework.HTTP)).
|
||||||
|
Set("Host", host).
|
||||||
|
End()
|
||||||
|
|
||||||
|
Expect(errs).Should(BeEmpty())
|
||||||
|
Expect(resp.StatusCode).Should(Equal(http.StatusOK))
|
||||||
|
Expect(resp.Header.Get(firstCustomHeader)).Should(ContainSubstring(firstCustomHeaderValue))
|
||||||
|
Expect(resp.Header.Get(secondCustomHeader)).Should(ContainSubstring(secondCustomHeaderValue))
|
||||||
|
})
|
||||||
|
})
|
Loading…
Reference in a new issue