apiVersion: v1 kind: ConfigMap metadata: name: jupiter-cors-config namespace: nearle data: nginx.conf: | events {} http { upstream jupiter_backend { server jupiter:80; } server { listen 80; location / { proxy_pass http://jupiter_backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; add_header 'Access-Control-Allow-Origin' '*' always; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, PATCH, DELETE' always; add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization, X-Requested-With, Accept, Origin, X-Auth-Token' always; if ($request_method = 'OPTIONS') { add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, PATCH, DELETE'; add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization, X-Requested-With, Accept, Origin, X-Auth-Token'; add_header 'Access-Control-Max-Age' 1728000; add_header 'Content-Type' 'text/plain; charset=utf-8'; add_header 'Content-Length' 0; return 204; } } } } --- apiVersion: apps/v1 kind: Deployment metadata: name: jupiter-cors-proxy namespace: nearle labels: app: jupiter-cors-proxy spec: replicas: 1 selector: matchLabels: app: jupiter-cors-proxy template: metadata: labels: app: jupiter-cors-proxy spec: tolerations: - key: dedicated operator: Equal value: apps effect: NoSchedule containers: - name: nginx image: nginx:alpine ports: - containerPort: 80 volumeMounts: - name: nginx-config mountPath: /etc/nginx/nginx.conf subPath: nginx.conf resources: requests: memory: "32Mi" cpu: "10m" limits: memory: "64Mi" cpu: "100m" volumes: - name: nginx-config configMap: name: jupiter-cors-config --- apiVersion: v1 kind: Service metadata: name: jupiter-cors-proxy namespace: nearle labels: app: jupiter-cors-proxy spec: selector: app: jupiter-cors-proxy ports: - port: 80 targetPort: 80 protocol: TCP