How can I put basic auth on specific HTTP methods in ngnix ingress?

8/23/2018

I can create ingress with basic auth. I followed the template from kubernetes/ingress-nginx:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-with-auth
  annotations:
    # type of authentication
    nginx.ingress.kubernetes.io/auth-type: basic
    # name of the secret that contains the user/password definitions
    nginx.ingress.kubernetes.io/auth-secret: basic-auth
    # message to display with an appropriate context why the authentication is required
    nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required - foo'
spec:
  rules:
  - host: foo.bar.com
    http:
      paths:
      - path: /
        backend:
          serviceName: http-svc
          servicePort: 80

It works fine, but I need to allow 'OPTIONS' method without basic auth for pre-flight requests. Any pointers on how to do it will be very helpful.

-- Shibu
kubernetes
kubernetes-ingress
nginx
nginx-ingress

1 Answer

12/13/2019

You could enable nginx-ingress cors with annotation:

nginx.ingress.kubernetes.io/enable-cors: "true"

See this for more configurations.

-- Fei
Source: StackOverflow