Set up traefik ingressroute with prefixstrip middleware to avoid extra network hop
This commit is contained in:
71
12-deploying-containers/kubernetes/client-react-nginx.yml
Normal file
71
12-deploying-containers/kubernetes/client-react-nginx.yml
Normal file
@ -0,0 +1,71 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: client-react-nginx
|
||||
labels:
|
||||
app: client-react-nginx
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: client-react-nginx
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: client-react-nginx
|
||||
spec:
|
||||
containers:
|
||||
- image: sidpalas/devops-directive-docker-course-client-react-nginx:5
|
||||
name: client-react-nginx
|
||||
ports:
|
||||
- containerPort: 80
|
||||
protocol: TCP
|
||||
readinessProbe:
|
||||
failureThreshold: 3
|
||||
httpGet:
|
||||
path: /ping
|
||||
port: 80
|
||||
resources:
|
||||
limits:
|
||||
memory: 100Mi
|
||||
requests:
|
||||
cpu: 50m
|
||||
memory: 100Mi
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
privileged: false
|
||||
volumeMounts:
|
||||
- mountPath: /etc/nginx/conf.d
|
||||
name: nginx-conf
|
||||
securityContext:
|
||||
seccompProfile:
|
||||
type: RuntimeDefault
|
||||
volumes:
|
||||
- configMap:
|
||||
defaultMode: 420
|
||||
name: nginx-conf
|
||||
name: nginx-conf
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: nginx-conf
|
||||
data:
|
||||
default.conf: |-
|
||||
server {
|
||||
listen 80;
|
||||
|
||||
location /ping {
|
||||
access_log off;
|
||||
add_header 'Content-Type' 'text/plain';
|
||||
return 200 "pong";
|
||||
}
|
||||
|
||||
location / {
|
||||
root /usr/share/nginx/html;
|
||||
index index.html index.htm;
|
||||
try_files $uri $uri/ /index.html =404;
|
||||
}
|
||||
|
||||
include /etc/nginx/extra-conf.d/*.conf;
|
||||
}
|
||||
45
12-deploying-containers/kubernetes/ingress-route.yml
Normal file
45
12-deploying-containers/kubernetes/ingress-route.yml
Normal file
@ -0,0 +1,45 @@
|
||||
apiVersion: traefik.containo.us/v1alpha1
|
||||
kind: IngressRoute
|
||||
metadata:
|
||||
name: primary
|
||||
spec:
|
||||
entryPoints:
|
||||
- web
|
||||
routes:
|
||||
- kind: Rule
|
||||
match: Host(`docker-course-kubernetes.devopsdirective.com`)
|
||||
services:
|
||||
- kind: Service
|
||||
name: client-react-nginx
|
||||
namespace: default
|
||||
port: 80
|
||||
scheme: http
|
||||
- kind: Rule
|
||||
match: Host(`docker-course-kubernetes.devopsdirective.com`) && PathPrefix(`/api/node`)
|
||||
middlewares:
|
||||
- name: strip-api-prefixes
|
||||
services:
|
||||
- kind: Service
|
||||
name: api-node
|
||||
port: 3000
|
||||
scheme: http
|
||||
- kind: Rule
|
||||
match: Host(`docker-course-kubernetes.devopsdirective.com`) && PathPrefix(`/api/golang`)
|
||||
middlewares:
|
||||
- name: strip-api-prefixes
|
||||
services:
|
||||
- kind: Service
|
||||
name: api-golang
|
||||
port: 8080
|
||||
scheme: http
|
||||
---
|
||||
apiVersion: traefik.containo.us/v1alpha1
|
||||
kind: Middleware
|
||||
metadata:
|
||||
name: strip-api-prefixes
|
||||
spec:
|
||||
stripPrefix:
|
||||
forceSlash: false
|
||||
prefixes:
|
||||
- /api/node
|
||||
- /api/golang
|
||||
@ -1,11 +0,0 @@
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: primary
|
||||
namespace: default
|
||||
spec:
|
||||
defaultBackend:
|
||||
service:
|
||||
name: client-react-nginx
|
||||
port:
|
||||
number: 80
|
||||
@ -1,37 +0,0 @@
|
||||
server {
|
||||
listen 80;
|
||||
|
||||
# Kubernetes dns server
|
||||
resolver kube-dns.kube-system.svc.cluster.local valid=5s;
|
||||
|
||||
location /ping {
|
||||
access_log off;
|
||||
add_header 'Content-Type' 'text/plain';
|
||||
return 200 "pong";
|
||||
}
|
||||
location /api/golang/ {
|
||||
proxy_set_header X-Forwarded-Host $host;
|
||||
proxy_set_header X-Forwarded-Server $host;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_http_version 1.1;
|
||||
|
||||
set $api_golang_upstream api-golang.default.svc.cluster.local:8080/;
|
||||
proxy_pass http://$api_golang_upstream;
|
||||
}
|
||||
location /api/node/ {
|
||||
proxy_set_header X-Forwarded-Host $host;
|
||||
proxy_set_header X-Forwarded-Server $host;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_http_version 1.1;
|
||||
|
||||
set $api_node_upstream api-node.default.svc.cluster.local:3000/;
|
||||
proxy_pass http://$api_node_upstream;
|
||||
}
|
||||
location / {
|
||||
root /usr/share/nginx/html;
|
||||
index index.html index.htm;
|
||||
try_files $uri $uri/ /index.html =404;
|
||||
}
|
||||
|
||||
include /etc/nginx/extra-conf.d/*.conf;
|
||||
}
|
||||
Reference in New Issue
Block a user