Как получить доступ к прометею и графане через входной шлюз 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 не смогла загрузить файлы своего приложения

  1. Это может быть вызвано настройками обратного прокси.

  2. Если вы размещаете графану по подпутью, убедитесь, что ваш параметр root_path grafana.ini включает подпуть

  3. Если у вас есть локальная сборка разработчика, убедитесь, что вы создаете интерфейс, используя: npm run dev, npm run watch или npm run build.

  4. Иногда может помочь перезапуск графана-сервера **

Нужна помощь специалиста по этому поводу

      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. Как и без правильной конфигурации графаны, которая не будет работать правильно.

Другие вопросы по тегам