ERR_TOO_MANY_REDIRECTS 302 与 ELK Operator 7.10.0 使用 Server.basePath

ERR_TOO_MANY_REDIRECTS 302 with ELK Operator 7.10.0 using Server.basePath

我有一个 elasticsearchkibana 版本 7.10.0 在 kubernetes

中使用 elk 运算符的弹性堆栈

每当我输入 link https://monitoring.cloudapp.azure.com/kibana 时,我都会收到此重定向:

https://monitoring.cloudapp.azure.com/kibana/login?next=%2Fkibana%2Fkibana%2Flogin%3Fnext%3D%2Fkibana%2Fkibana%2Flogin%3Fnext%3D%252Fkibana%252Fkibana%

Pod 日志中:

"type":"response","@timestamp":"2020-12-23T15:38:27Z","tags":,"pid":7,"method":"get","statusCode":302,"req":{"url":"/kibana/login?next=%2Fkibana%2Fkibana%2Flogin%3Fnext%3D%252Fkibana%252.....

Kibana.yaml

apiVersion: kibana.k8s.elastic.co/v1
kind: Kibana
metadata:
  name: kibana
spec:
  version: 7.10.0
  count: 1
  elasticsearchRef:
    name: elastic-https
  http:
    service:
      spec:
        type: ClusterIP
    tls:
      selfSignedCertificate:
        disabled: true
  podTemplate:
    spec:
      containers:
      - name: kibana
        env:
        - name: SERVER_BASEPATH
          value: "/kibana"
        resources:
          requests:
            memory: 4Gi
            cpu: 1
          limits:
            memory: 8Gi
            cpu: 2
    metadata:
      annotations:
        sidecar.istio.io/rewriteAppHTTPProbers: "true"

kibana.ingress.yaml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: istio
  name: kibana-ingress
spec:
  rules:
    - host: "monitoring.cloudapp.azure.com"
      http:
        paths:
          - path: /kibana/login.*
            backend:
              serviceName: kibana-kb-http
              servicePort: 5601
          - path: /kibana
            backend:
              serviceName: kibana-kb-http
              servicePort: 5601
          - path: /kibana/*
            backend:
              serviceName: kibana-kb-http
              servicePort: 5601

无法使用隐身 window,每当我执行 kubectl port-forward 时我都会遇到同样的问题 我偶然发现了重定向的同样问题(使用 HTTP

> http://localhost:52000/kibana/login?next=%2Fkibana%2Fkibana%2Flogin%3Fnext%

解决办法就是这样加上server.rewriteBasePath:true

---
apiVersion: kibana.k8s.elastic.co/v1
kind: Kibana
metadata:
  name: kibana
spec:
  config:
    server.rewriteBasePath: true

并像这样更新 readinessProbe:

 podTemplate:
    spec:
      containers:
      - name: kibana
        readinessProbe:
          httpGet:
            scheme: HTTP
            path: /kibana
            port: 5601
        env:
        - name: SERVER_BASEPATH
          value: "/kibana"

不要忘记超过 1 个副本集,从 / kibana 到 /kibana/login 的重定向不起作用