通过NGINX入口控制器进行Minio的ERR_TOO_MANY_REDIRECTS

时间:2019-11-29 13:31:07

标签: kubernetes nginx-ingress minio

我有一个Minio ClusterIP服务正在Kubernetes集群中运行。最重要的是,我有一个NGINX Ingress Controller。 NGINX Ingress需要将Minio流量转发至Minio服务,并将其他流量转发至其相应服务。

我的Ingress配置如下:

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

部署后,该应用即可正常运行。但是,Minio页面出现问题,抱怨:

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

实际上,请求一直处于重定向状态。这是Chrome DevTools的网络控制台中的屏幕截图。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

好的,我发现Minio总是重定向到/ minio /。因此,我们必须将/minio保留在路径中,并将其传递给Minio服务。

当我将其路径规则更改为- path: /(minio/.*)时,它会起作用。现在Ingress的配置如下所示:

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

我已经在浏览器中使用了Minio服务:

希望这会有所帮助。