[英]K3s traefik ingress returns gateway timeout
我目前正在使用基於 rpi 的 k3s 集群,我正在觀察一個奇怪的現象。
我部署了兩個應用程序。 第一個是 nginx,我可以根據以下入口規則在 url http://external-ip/foo上訪問它:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: foo
namespace: foo
annotations:
kubernetes.io/ingress.class: traefik
traefik.ingress.kubernetes.io/rule-type: "PathPrefixStrip"
traefik.ingress.kubernetes.io/rewrite-target: "/"
spec:
rules:
- http:
paths:
- path: /foo
backend:
serviceName: foo-service
servicePort: 8081
另一個是 grafana,根據以下入口規則,我無法在 url http://external-ip/grafana上訪問它:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: grafana
namespace: grafana
annotations:
kubernetes.io/ingress.class: traefik
traefik.ingress.kubernetes.io/rule-type: "PathPrefixStrip"
traefik.ingress.kubernetes.io/rewrite-target: "/"
spec:
rules:
- http:
paths:
- path: /grafana
backend:
serviceName: grafana-service
servicePort: 3000
當我直接在 pod 上進行端口轉發時,我可以訪問 grafana 應用程序,當我在 grafana 服務上使用端口轉發時,它也可以工作。
但是,一旦我嘗試通過子路徑到達它,我就會得到網關超時。
有人猜我錯過了什么嗎?
這里是grafana部署的部署和服務:
apiVersion: apps/v1
kind: Deployment
metadata:
name: grafana
namespace: grafana
labels:
app: grafana
tier: frontend
service: monitoring
spec:
selector:
matchLabels:
app: grafana
tier: frontend
template:
metadata:
labels:
app: grafana
tier: frontend
service: monitoring
spec:
containers:
- image: grafana
imagePullPolicy: IfNotPresent
name: grafana
envFrom:
- configMapRef:
name: grafana-config
ports:
- name: frontend
containerPort: 3000
protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
name: grafana-service
namespace: grafana
labels:
app: grafana
tier: frontend
service: monitoring
spec:
selector:
app: grafana
tier: frontend
type: NodePort
ports:
- name: frontend
port: 3000
protocol: TCP
targetPort: 3000
我必須將以下兩個參數添加到我的 configmap 以使其工作:
GF_SERVER_ROOT_URL=http://localhost:3000/grafana/
GF_SERVER_FROM_SUB_PATH=true
正如我在評論中提到的那樣,grafana 沒有聽/
喜歡默認的 nginx。
有相關的github 問題,如果你想讓它工作,你應該指定 root_url
grafana.ini:
server:
root_url: https://subdomain.example.com/grafana
@tehemaroo 添加他自己的解決方案,包括在 configmap 中更改 root url 和 sub_path
我必須將以下兩個參數添加到我的 configmap 以使其工作:
GF_SERVER_ROOT_URL=http://localhost:3000/grafana/
GF_SERVER_FROM_SUB_PATH=true
以及有關的相關文檔
在子路徑后面服務 Grafana:
在 root_url 的末尾包含子路徑。
將 serve_from_sub_path 設置為 true。
[server]
domain = example.com
root_url = %(protocol)s://%(domain)s:%(http_port)s/grafana/
serve_from_sub_path = true
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.