# use nginx to be a proxy, mirror each request to other services, 10.96.2.58 send back the reponse to user client. m1 and m2 just mirror the request, they throw the reponse. 10.96.x.x are clusterIPs.
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-config
data:
nginx.conf: |
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html;
proxy_set_header X-Original-URI $request_uri;
proxy_set_header Host $host:$server_port;
proxy_set_header Connection "";
proxy_http_version 1.1;
chunked_transfer_encoding on;
proxy_pass http://10.96.2.58:80;
mirror /m1;
mirror /m2;
mirror_request_body on;
}
location /m1{
proxy_pass http://10.96.1.135:80$request_uri;
proxy_set_header X-Original-URI $request_uri;
proxy_set_header Host $host:$server_port;
proxy_set_header Connection "";
proxy_http_version 1.1;
chunked_transfer_encoding on;
}
location /m2{
proxy_pass http://10.96.2.164:80$request_uri;
proxy_set_header X-Original-URI $request_uri;
proxy_set_header Host $host:$server_port;
proxy_set_header Connection "";
proxy_http_version 1.1;
chunked_transfer_encoding on;
}
}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
nodeSelector:
ip: 192.168.1.2
containers:
- name: nginx-container
image: net-nginx-x86:v1.0
ports:
- containerPort: 80
volumeMounts:
- name: nginx-config
mountPath: /etc/nginx/conf.d
volumes:
- name: nginx-config
configMap:
name: nginx-config
---
# expose 80 port server
apiVersion: v1
kind: Service
metadata:
name: nginx-4-dvwa
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: NodePort