Merge pull request #1019 from aledbf/update-echoheaders

Update echoheaders
This commit is contained in:
Prashanth B 2016-05-25 21:03:34 -07:00
commit e93d8d8152
13 changed files with 131 additions and 9 deletions

View file

@ -46,7 +46,7 @@ $ kubectl create -f examples/default/rc-default.yaml
First we need to deploy some application to publish. To keep this simple we will use the [echoheaders app](https://github.com/kubernetes/contrib/blob/master/ingress/echoheaders/echo-app.yaml) that just returns information about the http request as output First we need to deploy some application to publish. To keep this simple we will use the [echoheaders app](https://github.com/kubernetes/contrib/blob/master/ingress/echoheaders/echo-app.yaml) that just returns information about the http request as output
``` ```
kubectl run echoheaders --image=gcr.io/google_containers/echoserver:1.3 --replicas=1 --port=8080 kubectl run echoheaders --image=gcr.io/google_containers/echoserver:1.4 --replicas=1 --port=8080
``` ```
Now we expose the same application in two different services (so we can create different Ingress rules) Now we expose the same application in two different services (so we can create different Ingress rules)

View file

@ -2,7 +2,7 @@
All the examples references the services `echoheaders-x` and `echoheaders-y` All the examples references the services `echoheaders-x` and `echoheaders-y`
``` ```
kubectl run echoheaders --image=gcr.io/google_containers/echoserver:1.3 --replicas=1 --port=8080 kubectl run echoheaders --image=gcr.io/google_containers/echoserver:1.4 --replicas=1 --port=8080
kubectl expose deployment echoheaders --port=80 --target-port=8080 --name=echoheaders-x kubectl expose deployment echoheaders --port=80 --target-port=8080 --name=echoheaders-x
kubectl expose deployment echoheaders --port=80 --target-port=8080 --name=echoheaders-x kubectl expose deployment echoheaders --port=80 --target-port=8080 --name=echoheaders-x
``` ```

View file

@ -58,7 +58,7 @@ spec:
spec: spec:
containers: containers:
- name: echoheaders - name: echoheaders
image: gcr.io/google_containers/echoserver:1.3 image: gcr.io/google_containers/echoserver:1.4
ports: ports:
- containerPort: 8080 - containerPort: 8080
--- ---

View file

@ -0,0 +1,18 @@
# Copyright 2015 The Kubernetes Authors. All rights reserved.
#
# 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.
FROM gcr.io/google_containers/nginx-slim:0.6
MAINTAINER Prashanth B <beeps@google.com>
ADD nginx.conf /etc/nginx/nginx.conf
ADD README.md README.md

View file

@ -0,0 +1,11 @@
all: push
# TAG 0.0 shouldn't clobber any release builds
TAG = 1.3
PREFIX = gcr.io/google_containers/echoserver-redirect
container:
docker build -t $(PREFIX):$(TAG) .
push: container
gcloud docker push $(PREFIX):$(TAG)

View file

@ -0,0 +1,6 @@
# Echoserver - forked from echoheaders-1.3
This is a simple server that responds with the http headers it received.
Image versions >= 1.3 redirect requests on :80 with `X-Forwarded-Proto: http` to :443.
Image versions > 1.0 run an nginx server, and implement the echoserver using lua in the nginx config.
Image versions <= 1.0 run a python http server instead of nginx, and don't redirect any requests.

View file

@ -0,0 +1,32 @@
apiVersion: v1
kind: Service
metadata:
name: echoheaders
labels:
app: echoheaders
spec:
type: NodePort
ports:
- port: 80
targetPort: 8080
protocol: TCP
name: http
selector:
app: echoheaders
---
apiVersion: v1
kind: ReplicationController
metadata:
name: echoheaders
spec:
replicas: 1
template:
metadata:
labels:
app: echoheaders
spec:
containers:
- name: echoheaders
image: gcr.io/google_containers/echoserver-redirect:1.3
ports:
- containerPort: 8080

View file

@ -0,0 +1,57 @@
events {
worker_connections 1024;
}
http {
default_type 'text/plain';
# maximum allowed size of the client request body. By default this is 1m.
# Request with bigger bodies nginx will return error code 413.
# http://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size
client_max_body_size 10m;
server {
# please check the benefits of reuseport https://www.nginx.com/blog/socket-sharding-nginx-release-1-9-1
# basically instructs to create an individual listening socket for each worker process (using the SO_REUSEPORT
# socket option), allowing a kernel to distribute incoming connections between worker processes.
listen 8080 default_server reuseport;
# Replace '_' with your hostname.
server_name _;
if ($http_x_forwarded_proto = "http") {
return 301 https://$host$request_uri;
}
location / {
lua_need_request_body on;
content_by_lua_block {
ngx.say("CLIENT VALUES:")
ngx.say("client_address=", ngx.var.remote_addr)
ngx.say("command=", ngx.req.get_method())
ngx.say("real path=", ngx.var.request_uri)
ngx.say("query=", ngx.var.query_string)
ngx.say("request_version=", ngx.req.http_version())
ngx.say("request_uri=", ngx.var.scheme.."://"..ngx.var.host..":"..ngx.var.server_port..ngx.var.request_uri)
ngx.say("")
ngx.say("SERVER VALUES:")
ngx.say("server_version=", "nginx: "..ngx.var.nginx_version.." - lua: "..ngx.config.ngx_lua_version)
ngx.say("")
ngx.say("HEADERS RECEIVED:")
local headers = ngx.req.get_headers()
local keys = {}
for key, val in pairs(headers) do
table.insert(keys, key)
end
table.sort(keys)
for i, key in ipairs(keys) do
ngx.say(key, "=", headers[key])
end
ngx.say("BODY:")
ngx.print(ngx.var.request_body or "-no body in request-")
}
}
}
}

View file

@ -12,7 +12,7 @@
# 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.
FROM gcr.io/google_containers/nginx-slim:0.3 FROM gcr.io/google_containers/nginx-slim:0.6
MAINTAINER Prashanth B <beeps@google.com> MAINTAINER Prashanth B <beeps@google.com>
ADD nginx.conf /etc/nginx/nginx.conf ADD nginx.conf /etc/nginx/nginx.conf
ADD README.md README.md ADD README.md README.md

View file

@ -1,7 +1,7 @@
all: push all: push
# TAG 0.0 shouldn't clobber any release builds # TAG 0.0 shouldn't clobber any release builds
TAG = 1.3 TAG = 1.4
PREFIX = gcr.io/google_containers/echoserver PREFIX = gcr.io/google_containers/echoserver
container: container:

View file

@ -1,6 +1,7 @@
# Echoserver # Echoserver
This is a simple server that responds with the http headers it received. This is a simple server that responds with the http headers it received.
Image versions >= 1.4 removes the redirect introduced in 1.3.
Image versions >= 1.3 redirect requests on :80 with `X-Forwarded-Proto: http` to :443. Image versions >= 1.3 redirect requests on :80 with `X-Forwarded-Proto: http` to :443.
Image versions > 1.0 run an nginx server, and implement the echoserver using lua in the nginx config. Image versions > 1.0 run an nginx server, and implement the echoserver using lua in the nginx config.
Image versions <= 1.0 run a python http server instead of nginx, and don't redirect any requests. Image versions <= 1.0 run a python http server instead of nginx, and don't redirect any requests.

View file

@ -27,6 +27,6 @@ spec:
spec: spec:
containers: containers:
- name: echoheaders - name: echoheaders
image: gcr.io/google_containers/echoserver:1.3 image: gcr.io/google_containers/echoserver:1.4
ports: ports:
- containerPort: 8080 - containerPort: 8080

View file

@ -17,9 +17,6 @@ http {
# Replace '_' with your hostname. # Replace '_' with your hostname.
server_name _; server_name _;
if ($http_x_forwarded_proto = "http") {
return 301 https://$host$request_uri;
}
location / { location / {
lua_need_request_body on; lua_need_request_body on;