В настоящее время я играю с кластером k3s на основе rpi и наблюдаю странное явление.
Развернул два приложения. Первый - это 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
А другой - графана, которую я не могу найти по 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
Когда я выполняю переадресацию портов прямо на модуле, я могу связаться с приложением 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
Решение
Мне пришлось добавить следующие два параметра в мою конфигурационную карту, чтобы она работала:
GF_SERVER_ROOT_URL=http://localhost:3000/grafana/
GF_SERVER_FROM_SUB_PATH=true
/
, и вы переписываете каждый путь на нем, чтобы он работал. Вопрос в том, слушать ли графана на/
? Какой у вас корневой URL-адрес конфигурации grafana.ini? Взгляните на этот комментарий на github. - person Jakub   schedule 03.06.2020