ERR_TOO_MANY_REDIRECTS for Minio via NGINX Ingress Controller

11/29/2019

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?

-- Yuci
kubernetes
minio
nginx-ingress

1 Answer

11/29/2019

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.

-- Yuci
Source: StackOverflow