Istio - Выставлять виртуальные сервисы через шлюз - PullRequest
1 голос
/ 22 марта 2019

Я настроил Istio с помощью рулевого управления, и я пытаюсь открыть сервисы для шлюза istio-ingressgateway.

Вот конфигурация, с которой я решил пойти:

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: grafana-gateway
  namespace: istio-system
spec:
  selector:
    istio: ingressgateway
  servers:
  - port:
      number: 31400
      name: http
      protocol: HTTP
    hosts:
    - "*"
---
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: kiali-gateway
  namespace: istio-system
spec:
  selector:
    istio: ingressgateway
  servers:
  - port:
      number: 15029
      name: http
      protocol: HTTP
    hosts:
    - "*"
---
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: prometheus-gateway
  namespace: istio-system
spec:
  selector:
    istio: ingressgateway
  servers:
  - port:
      number: 15030
      name: http
      protocol: HTTP
    hosts:
    - "*"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: grafana-vts
  namespace: istio-system
spec:
  hosts:
  - "*"
  gateways:
  - grafana-gateway
  http:
  - match:
    - uri:
        prefix: /
    route:
    - destination:
        host: grafana.istio-system.svc.cluster.local
        port: 
          number: 3000
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: kiali-vts
  namespace: istio-system
spec:
  hosts:
  - "*"
  gateways:
  - kiali-gateway
  http:
  - match:
    - uri:
        prefix: /
    route:
    - destination:
        host: kiali.istio-system.svc.cluster.local
        port: 
          number: 20001
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: prometheus-vts
  namespace: istio-system
spec:
  hosts:
  - "*"
  gateways:
  - prometheus-gateway
  http:
  - match:
    - uri:
        prefix: /
    route:
    - destination:
        host: prometheus.istio-system.svc.cluster.local
        port: 
          number: 9090

Однако - это только маршрутизирует графан через порты 31400, 15029 и 15030, в то время как он должен делать это только для 31400.

Если я использую только один шлюз и переписываю URI, он выдаетОшибка 404 / говорит мне, что обратный прокси не настроен должным образом

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: all-gateway
  namespace: istio-system
spec:
  selector:
    istio: ingressgateway
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "*"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: grafana-vts
  namespace: istio-system
spec:
  hosts:
  - "*"
  gateways:
  - all-gateway
  http:
  - match:
    - uri:
        prefix: "/grafana"
      rewrite:
        uri: /
    route:
    - destination:
        host: grafana.istio-system.svc.cluster.local
        port: 
          number: 3000
and etc...

Я немного новичок в istio, и примеры, которые я просмотрел, не совсем говорят об этом.Если у вас есть идея, это будет здорово - это из-за того, как я подстановил хостов?

1 Ответ

1 голос
/ 25 марта 2019

Ваш шлюз и виртуальные службы смешаны, поскольку для всех них используются одни и те же хосты (*), поэтому их поведение в Istio не определено.Я бы выделил поддельные имена хостов, например, my-grafana.com, my-kiali.com и использовал бы их в определениях шлюза и виртуальной службы.Я добавил бы эти поддельные имена хостов в файл /etc/hosts/ и использовал бы их для доступа к Графане и Киали с моего компьютера.

...