nginx reverse proxy in Kubernetes

Dynamic reverse proxy using nginx in Kubernetes

1. create a configmap.yaml  

apiVersion: v1 kind: ConfigMap metadata:   name: confnginx data:   nginx.conf: |     user  nginx;     worker_processes  1;     error_log  /var/log/nginx/error.log warn;     pid        /var/run/nginx.pid;     events {         worker_connections  1024;     }     http {       include       /etc/nginx/mime.types;       default_type  application/octet-stream;       log_format  main  '$remote_addr - $remote_user [$time_local] $request '                           '$status $body_bytes_sent $http_referer '                           '$http_user_agent $http_x_forwarded_for';       access_log  /var/log/nginx/access.log  main;       sendfile        on;       keepalive_timeout  65;       server {         listen 80;          server_name ~^(?<subdomain>.*?)\.;         resolver kube-dns.kube-system.svc.cluster.local valid=5s;          location /healthz {           return 200;         }          location / {           proxy_set_header Upgrade $http_upgrade;           proxy_set_header Connection Upgrade;           proxy_pass http://$subdomain.msce0.svc.cluster.local;           proxy_set_header Host $host;           proxy_http_version 1.1;         }       }     }

 run

kubectl apply -f configmap.yaml

 

2. create a service.yaml

apiVersion: apps/v1 kind: Deployment metadata:   name: nginx   labels:     app: nginx spec:   selector:     matchLabels:       app: nginx   replicas: 1   template:     metadata:       labels:         app: nginx     spec:       containers:         - name: nginx           image: nginx:alpine           ports:           - containerPort: 80           volumeMounts:             - name: nginx-config               mountPath: /etc/nginx/nginx.conf               subPath: nginx.conf       volumes:         - name: nginx-config           configMap:             name: confnginx

run

kubectl apply -f service.yaml