【问题标题】:K8S NGINX ingress reverse proxy rules for kibana etc用于 kibana 等的 K8S NGINX 入口反向代理规则
【发布时间】:2021-02-17 20:23:43
【问题描述】:

我知道关于这个主题有很多问题,但到目前为止没有任何帮助。第一个问题是我自己的理解。我已经在 K8S 中设置了 Nginx 入口控制器,现在正在尝试为 Kibana 集群服务添加入口规则,该服务在端口转发方面工作良好。

我根本无法让反向代理工作。我会感激两件事:

  1. K8S 入口规则使其工作
  2. 一个非常好的“傻瓜”指南,用于通过入口设置反向代理。我发现的大多数指南都是“这是一个 RP,嘿,我们可以将 /app1 重定向到 /app2……这不是很好吗?”除了最基本的东西,他们真的没有任何细节。或者,它们是基于 NGINF conf 的,这不会以相同的方式映射到 K8S 入口规则

发生的情况是,我可以让浏览器 /kibana 重定向到我的 K8S 服务,但是 Kibana 回复它自己的重定向到 /app/home,然后进程以 404 中断(而不是 /kibana/app/家,因为它需要)。我不知道如何在入口规则中处理这个流——它不像将 X 重定向到 Y 那样简单。

我尝试了许多入口规则,但基本上是无限的猴子,直到某些东西起作用。我真的很想正确理解它,但也希望得到这个具体问题的答案。

到目前为止的入口


apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: nginx-kibana
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
  ingressClassName: nginx
  rules:
  - http:
      paths:
      - path: /kibana(/|$)(.*)
        pathType: Prefix
        backend:
          serviceName: elasticsearch-kibana
          servicePort: 5601

K8S 1.18.3

使用 bitnami 图表,我通过 Helm 在我的日志命名空间中创建了 kibana(和 ES):

helm install elasticsearch bitnami/elasticsearch --set sysctlImage.enabled=false,master.replicas=1,coordinating.replicas=1,data.replicas=1,ingest.replicas=1,global.kibanaEnabled=true -n logging

我的入口控制器也通过我的入口命名空间中的掌舵

helm install ingress bitnami/nginx-ingress-controller  -n ingress

入口规则适用于与 kibana 相同的日志命名空间

kubectl apply -f ingress-rules.yaml -n logging

【问题讨论】:

  • 您使用的是哪个 Kibana 版本?你是如何部署这个的?我想复制这个,因为我可能会为您提供解决方案。不过需要先测试一下。
  • 在原始请求中添加了附加信息

标签: kibana kubernetes-ingress nginx-reverse-proxy


【解决方案1】:

我设法使它与server.basePath 参数一起工作。

文档是这样说的:

basePath 使您能够指定在代理后面运行 Kibana 的路径。使用server.rewriteBasePath 设置告诉 Kibana 是否应该从它收到的请求中删除 basePath,并防止在启动时出现弃用警告。此设置不能以斜线结尾 (/)。

此外,由于您在入口级别进行重写,我还必须禁用 rewriteBasePath(它应该是 false 是 kibana 7 和更早版本的默认值)。现在完整的配置如下所示:

  kibana.yml: |
    pid.file: /opt/bitnami/kibana/tmp/kibana.pid
    server.host: "::"
    server.port: 5601
    elasticsearch.hosts: [http://elasticsearch-coordinating-only:9200]
    server.basePath: /kibana 
    server.rewriteBasePath: false

如下所示,请求并没有重定向到/app/home,而是重定向到/kibana/app/home,这正是我们想要的:

➜  curl $(minikube ip)/kibana -v      
*   Trying 192.168.49.2...
* TCP_NODELAY set
* Connected to 192.168.49.2 (192.168.49.2) port 80 (#0)
> GET /kibana HTTP/1.1
> Host: 192.168.49.2
---
< HTTP/1.1 302 Found
< Date: Mon, 22 Feb 2021 11:19:45 GMT
----
< location: /kibana/app/home
< kbn-name: elasticsearch-kibana-7f9f447b9c-mnxrs
----

【讨论】:

  • 谢谢你。您能否准确分享您如何设置 kibana.yml 文件并获得此 bitnami helm 脚本:“helm install elasticsearch bitnami/elasticsearch --set sysctlImage.enabled=false,master.replicas=1,coordinating.replicas=1,data。 replicas=1,ingest.replicas=1,global.kibanaEnabled=true -n logging" 运行它?
  • 我的部署方式和你一样。
【解决方案2】:

查找和更改文件 kibana.yml

server.basePath: /your/path

kibana.yml: |
    server.basePath: /dashboards/kibana
    server.rewriteBasePath: true
    elasticsearch.hosts: http://elasticsearch-svc:9200
    server.host: "0.0.0.0"

    logging.silent: false
    logging.quiet: true
    logging.verbose: false


    xpack:    
      security:
        enabled: false
      infra: 
        sources:
          default:
            logAlias: "logstash-*"
            fields:
              timestamp: "@timestamp"
              message: ["message"]
              host: "host"
              container: "syslog_program"

psicopante

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-10
    • 1970-01-01
    • 2020-08-12
    • 2018-12-20
    • 1970-01-01
    • 2021-11-09
    • 1970-01-01
    相关资源
    最近更新 更多