如何解决什么是gke入口上proxy_pass的等效项? 通过Helm提供资源创建一个Ingress资源测试
我在GKE上为kibana创建了一个入口,浏览器返回404(尽管它可以与原始服务一起使用),我想这是因为我需要路由到/app/kibana
端点。我该怎么办?
这是我的入口:
kind: Ingress
metadata:
name: my-ingress
namespace: default
annotations:
ingress.kubernetes.io/affinity: cookie
kubernetes.io/ingress.class: gce
kubernetes.io/ingress.global-static-ip-name: my-proxy
ingress.kubernetes.io/affinity: cookie
ingress.kubernetes.io/session-cookie-hash: sha1
ingress.kubernetes.io/session-cookie-name: route
nginx.ingress.kubernetes.io/affinity: cookie
kubernetes.io/ingress.class: gce
kubernetes.io/ingress.allow-http: "false"
annotations:
spec:
tls:
- secretName: my-tls
rules:
- http:
paths:
- path: /kibana
backend:
serviceName: kibana-nodeport
servicePort: 5601
我的节点端口服务:
apiVersion: v1
kind: Service
metadata:
name: kibana-nodeport
namespace: default
spec:
ports:
- port: 5601
protocol: TCP
targetPort: 5601
selector:
k8s-app: kibana
sessionAffinity: None
type: NodePort
kibana原始服务:
apiVersion: v1
kind: Service
metadata:
labels:
component: kibana
name: kibana-ext
namespace: default
spec:
externalTrafficPolicy: Cluster
loadBalancerSourceRanges:
- x.x.x.x/32
ports:
- name: http
port: 5601
protocol: TCP
targetPort: 5601
selector:
k8s-app: kibana
sessionAffinity: None
type: LoadBalancer
更新:
当我将Kibana的路径设置为“ / *”时,它可以工作。否则我会得到404。
解决方法
您应该添加/ *,以便子路径起作用
rules:
- http:
paths:
- path: /kibana/*
backend:
serviceName: kibana-nodeport
servicePort: 5601
,
由于原始问题已由用户@paltaa提供的答案解决,并由原始张贴者解决:
我将kibana.yml更改为/ kibana,再加上您的建议,它成功了!谢谢–伊丹
我想添加一些其他资源/信息和一个“指南”,以帮助解决类似问题。
使用GKE
在ingress-gke
中运行Kibana的步骤:
请记住,这是一个基本设置,仅供参考。
- 通过Helm提供资源
- 创建
Ingress
资源 - 在GCP云控制台(Web UI)中更改运行状况检查
- 测试
通过Helm提供资源
我在Github页面的下面安装时用作参考:
产生此设置的方法可能不同,但原理应相同(值)。
使用的命令(特定于Helm3):
-
$ helm repo add elastic https://helm.elastic.co
-
$ helm install es elastic/elasticsearch
-
$ helm pull elastic/kibana --untar
-
$ cd kibana/ && nano values.yaml
在values.yaml
中所做的更改如下:
healthCheckPath: "/test/app/kibana"
# Allows you to add any config files in /usr/share/kibana/config/
# such as kibana.yml
# Will work with http://DOMAIN.NAME/test/
kibanaConfig:
kibana.yml: |
server.basePath: /test
server.rewriteBasePath: true
service:
type: NodePort # <-- Changed from ClusterIP for ingress-gke
loadBalancerIP: ""
port: 5601
nodePort: ""
labels: {}
annotations: {}
-
$ helm install ki .
创建一个Ingress
资源
我使用此Ingress
资源可以访问Kibana:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: kibana-ingress
spec:
tls:
- secretName: ssl-certificate
rules:
- host: DOMAIN.NAME
http:
paths:
- path: /test/*
backend:
serviceName: ki-kibana
servicePort: 5601
关于问题中使用的注释,请对其进行复审,因为其中某些注释可能特定于ingress-nginx
,而不能与ingress-gke
一起使用。
应用此资源后,由于创建了运行状况检查的路径,我无法连接到Kibana:
- 运行状况检查创建的路径(不正确):
/
- 运行状况检查更改的路径(正确):
/test/app/kibana
您可以通过以下方式更改运行状况检查:
-
GCP Cloud Console (Web UI)
->Kubernetes Engine
->Services & Ingress
->kibana-ingress
->backend services (unhealthy)
->Health Check
- >Edit
测试
完成上述所有步骤后,您可以打开网络浏览器并输入:
-
https://DOMAIN.NAME/test
并受到Elastic的Web UI的问候。
其他资源:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。