apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-configmap
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 {
      proxy_cache_path /tmp levels=1:2 keys_zone=STATIC:10m inactive=24h  max_size=1g;

      gzip  on;    
      gzip_proxied any;

      map $sent_http_content_type $expires {
        default                    off;
        ~image/                    6M;
      } 

      server {
        listen 80 default_server;
        listen [::]:80 default_server;

        location / {
            
            proxy_pass             http://pi-web-internal;
            
            proxy_set_header       Host $host;
            proxy_cache            STATIC;
            proxy_cache_valid      200  1d;
            proxy_cache_use_stale  error timeout invalid_header updating
                                   http_500 http_502 http_503 http_504;
            add_header             X-Cache     $upstream_cache_status;
            add_header             X-Host      $hostname;         
        }
      }
    }
---
apiVersion: v1
kind: Service
metadata:
  name: pi-proxy-np
spec:
  ports:
    - port: 8040   
      targetPort: http 
      name: http
      nodePort: 30040
  selector:
    app: pi-proxy
  type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: pi-proxy
spec:
  selector:
    matchLabels:
      app: pi-proxy
  template:
    metadata:
      labels:
        app: pi-proxy
        storage: container
    spec:
      containers:
        - image: nginx:1.18-alpine
          name: nginx
          ports:
            - containerPort: 80
              name: http
          volumeMounts:
            - name: config
              mountPath: "/etc/nginx/"
              readOnly: true
      volumes:
        - name: config
          configMap:
            name: nginx-configmap
