Как получить доступ к прометею и графане через входной шлюз Istion? Я установил promethius anfd grafana через Helm
Я использовал команду ниже, чтобы вызвать модуль:
kubectl create deployment grafana --image=docker.io/grafana/grafana:5.4.3 -n monitoring
Затем я использовал команду ниже для создания custerIp
kubectl expose deployment grafana --type=ClusterIP --port=80 --target-port=3000 --protocol=TCP -n monitoring
то я использовал ниже виртуальный сервис
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: grafana
spec:
hosts:
- "*"
gateways:
- cogtiler-gateway.skydeck
http:
- match:
- uri:
prefix: /grafana
route:
- destination:
port:
number: 3000
host: grafana
kubectl apply -f grafana-virtualservice.yaml -n monitoring
virtualservice.networking.istio.io/grafana created
Теперь, когда я пытаюсь получить доступ, я получаю ошибку ниже от графаны:
Я получаю ошибку ниже:
** Если вы видите, что Grafana не смогла загрузить файлы своего приложения
Это может быть вызвано настройками обратного прокси.
Если вы размещаете графану по подпутью, убедитесь, что ваш параметр root_path grafana.ini включает подпуть
Если у вас есть локальная сборка разработчика, убедитесь, что вы создаете интерфейс, используя: npm run dev, npm run watch или npm run build.
Иногда может помочь перезапуск графана-сервера **
Нужна помощь специалиста по этому поводу
enter code here
2 ответа
Вам нужно создать
Gateway
чтобы разрешить маршрутизацию между
VirtualService
.
Что-то в строках:
kind: Gateway
metadata:
name: grafana
namespace: istio-system
spec:
selector:
# Make sure that the istio-ingressgateway pods have this label
istio: ingressgateway
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- grafana.my.domain.com
Вам также понадобится запись DNS для вашего домена (grafana.my-domain.com), которая указывает на IP-адрес вашего istio-ingressgateway.
Когда ваш браузер ударит
grafana.my.domain.com
, то он будет перенаправлен на. В
istio-ingressgateway
будет проверять
Host
из запроса и перенаправим запрос в grafana. Вы можете попробовать это вручную с помощью curl:
curl -v -H "Host: grafana.my.domain.com" "http://${PUBLIC_IP_OF_INGRESSGATEWAY}"
Вы можете проверить
kubectl get svc -n istio-system | grep istio-ingressgateway
чтобы получить общедоступный IP-адрес вашего входного шлюза.
Если вы хотите включить TLS, вам необходимо предоставить сертификат TLS для своего домена (проще всего с помощью cert-manager). Затем вы можете использовать перенаправление https на своем шлюзе, например:
kind: Gateway
metadata:
name: grafana
namespace: whatever
spec:
selector:
# Make sure that the istio-ingressgateway pods have this label
istio: ingressgateway
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- grafana.my.domain.com
tls:
httpsRedirect: true
- port:
number: 443
name: https
protocol: HTTPS
hosts:
- grafana.my.domain.com
tls:
mode: SIMPLE
# name of the secret containing the TLS certificate + keys. The secret must exist in the same namespace as the istio-ingressgateway (probably istio-system namespace)
# This secret can be created by cert-manager
# Or you can create a self-signed certificate
# and add it to manually inside the browser trusted certificates
credentialName: grafana-tls
Самое простое и рабочее решение для настройки - это графана.
host
а также
/
приставка.
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: grafana-gateway
namespace: monitoring
spec:
selector:
istio: ingressgateway
servers:
- port:
number: 80
name: http-grafana
protocol: HTTP
hosts:
- "*"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: grafana-vs
namespace: monitoring
spec:
hosts:
- "grafana.example.com"
gateways:
- grafana-gateway
http:
- match:
- uri:
prefix: /
route:
- destination:
host: grafana
port:
number: 80
Как вы упомянули в комментариях,
I want to use path based routing something like my.com/grafana
, это также можно настроить. Вы можете использовать istio rewrite, чтобы настроить это.
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: grafana-gateway
namespace: monitoring
spec:
selector:
istio: ingressgateway
servers:
- port:
number: 80
name: http-grafana
protocol: HTTP
hosts:
- "*"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: grafana-vs
namespace: monitoring
spec:
hosts:
- "*"
gateways:
- grafana-gateway
http:
- match:
- uri:
prefix: /grafana
rewrite:
uri: /
route:
- destination:
host: grafana
port:
number: 80
Но, согласно этой проблеме с github, вы также должны дополнительно настроить для этого grafana. Как и без правильной конфигурации графаны, которая не будет работать правильно.