Search code examples
kubernetesnginx-ingressminio

ERR_TOO_MANY_REDIRECTS for Minio via NGINX Ingress Controller


I have a Minio ClusterIP service running in a Kubernetes cluster. And on top of it, I have a NGINX Ingress Controller. NGINX Ingress needs to forward Minio traffic to the Minio service, and other traffic to their corresponding services.

My Ingress configuration looks like this:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-service
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  rules:
    - http:
        paths:
          - path: /app/?(.*)
            backend:
              serviceName: app-service
              servicePort: 3000
          - path: /minio/?(.*)
            backend:
              serviceName: minio-service
              servicePort: 9000

Once deployed, the app works fine. However, the Minio page has problem, complaining:

This page isn’t working
example.mysite.com redirected you too many times.
Try clearing your cookies.
ERR_TOO_MANY_REDIRECTS

And indeed, the requests are kept redirecting. Here is the screenshot from Chrome DevTools' Network console.

Any ideas?


Solution

  • As Minio always redirects to /minio/, you need to keep /minio in the path and pass it on to the Minio service.

    When I change its path rule to - path: /(minio/.*), it works. Now the Ingress configuration looks like below:

    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: ingress-service
      annotations:
        kubernetes.io/ingress.class: nginx
        nginx.ingress.kubernetes.io/rewrite-target: /$1
    spec:
      rules:
        - http:
            paths:
              - path: /app/?(.*)
                backend:
                  serviceName: app-service
                  servicePort: 3000
              - path: /(minio/.*)
                backend:
                  serviceName: minio-service
                  servicePort: 9000
    

    And I've got the Minio service working in the browser:

    Hope it is helpful.