我知道关于这个主题有很多问题,但到目前为止没有一个有帮助。第一个问题是我自己的理解。我已经在K8S中设置了一个Nginx Ingress Controller,现在正在尝试为Kibana集群服务添加入口规则,该服务在端口转发方面工作正常。
我根本无法让反向代理工作。我会欣赏两件事:
- K8S入口规则使其工作
1.一个非常好的“傻瓜”指南,通过入口设置反向代理。我发现的大多数指南都是“这是一个RP,嘿,我们可以将/app 1重定向到/app 2...是不是很棒“他们真的没有任何细节,除了非常基本的。或者,它们是基于NGINF conf的,这不会以相同的方式Map到K8S入口规则
发生的事情是,我可以让浏览器/kibana重定向到我的K8S服务,但然后Kibana回复它自己的重定向到/app/home,然后这个过程用404中断(而不是如果/kibana/app/home,因为它需要)。我不知道如何在入口规则中处理这个流--它不像重定向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在我的入口命名空间
helm install ingress bitnami/nginx-ingress-controller -n ingress
ingress规则应用于与kibana相同的日志命名空间
kubectl apply -f ingress-rules.yaml -n logging
3条答案
按热度按时间70gysomp1#
我设法使它与
server.basePath
参数工作。以下是docs对此的说法:
basePath使您能够指定在代理后运行时挂载Kibana的路径。使用
server.rewriteBasePath
设置来告诉Kibana是否应该从它收到的请求中删除basePath,并防止在启动时出现弃用警告。此设置不能以斜杠(/
)结尾。此外,由于您正在进行入口级别的重写,因此我还必须禁用
rewriteBasePath
(kibana 7和更老版本的默认值应该为false)。现在完整的配置如下所示:正如你在下面看到的,请求没有被重定向到
/app/home
,而是被重定向到/kibana/app/home
,这正是我们想要的:vcirk6k62#
查找并更改文件kibana.yml
server.basePath:/您的/路径
皮斯科潘特
px9o7tmv3#
我设法暴露Kibana使用下面给定的入口路线。不过没那么复杂
我的部署是(bitnami elasticsearch,kibana作为子图)