如何解决为什么这个 Open Distro Kibana kubernetes 入口配置在工作?
我正在尝试使用 minikube(最初)在 Kubernetes 下的 Open Distro for Elasticsearch 上将 Ingress 配置为 Kibana。我似乎让它工作,但我不明白为什么。 (我正在使用提供的掌舵图表,但我将绕过它并描述掌舵生成的 kibana-ingress.yaml 和 kibana-deployment.yaml)。默认的入口配置有一个路径:/,但是,我们可能需要其他东西的入口(比如 elasticsearch REST api),所以我想把它移到 /kibana。
所以经过一些研究和摸索,我发现这是有效的: kibana-ingress.yaml:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: opendistro-es-kibana-ing
labels:
app: opendistro-es
chart: "opendistro-es-1.12.0"
release: "opendistro-es"
heritage: "Helm"
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
rules:
- host: "minikube.mshome.net"
http:
paths:
- path: /kibana(/|$)(.*)
backend:
serviceName: opendistro-es-kibana-svc
servicePort: 443
kibana-deployment.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: opendistro-es
chart: "opendistro-es-1.12.0"
release: "opendistro-es"
heritage: "Helm"
role: kibana
name: opendistro-es-kibana
spec:
replicas: 1
selector:
matchLabels:
app: opendistro-es
release: "opendistro-es"
heritage: "Helm"
role: kibana
template:
metadata:
labels:
app: opendistro-es
chart: "opendistro-es-1.12.0"
release: "opendistro-es"
heritage: "Helm"
role: kibana
annotations:
spec:
containers:
- env:
- name: CLUSTER_NAME
value: elasticsearch
# If no custom configuration provided,default to internal DNS
- name: ELASTICSEARCH_HOSTS
value: https://opendistro-es-client-service:9200
- name: SERVER_BASEPATH
value: /kibana
image: docker.io/amazon/opendistro-for-elasticsearch-kibana:1.12.0
imagePullPolicy: "Always"
resources:
limits:
cpu: 500m
memory: 768Mi
requests:
cpu: 500m
memory: 512Mi
name: opendistro-es-kibana
volumeMounts:
ports:
- containerPort: 5601
serviceAccountName: opendistro-es-kibana
volumes:
restartPolicy: Always
基本上,在ingress中,我添加了nginx.ingress.kubernetes.io/rewrite-target:/$2 到注释,并将路径更改为:/kibana(/|$)(.*)
在部署中,我添加了一个环境变量:SERVER_BASEPATH=/kibana
如果我不做后者,那么在点击 minikube.mshome.net/kibana 时,它会立即失败,因为 kibana 重定向到 http://minikube.mshome.net/app/login?nextUrl=%2F(不是 .../kibana/app/login... )
所以,综上所述,为什么这样做?重写目标应该只是原始的,没有 kibana:/$2 基本上是“/”+路径中的 .* 组.但是 SERVER_BASEPATH 在 kibana 配置中设置了 server.basePath,如 Configure Kibana 中所述:
如果您正在运行,则允许您指定挂载 Kibana 的路径 在代理后面。
所以,它应该期待“/kibana”前缀,对吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。