Монтаж приложений разных путей с Istio - PullRequest
0 голосов
/ 02 марта 2019

Мы установили Istio в моем кластере Kubernetes на AWS (мы используем EKS).Мы развернули несколько приложений, таких как: Airflow, Jenkins, Grafana и т. Д., И мы можем достичь их с помощью port-forward.Итак, они работают, как и ожидалось.

Теперь мы хотели бы добиться возможности монтировать приложения на определенных путях, чтобы мы могли получить к ним доступ через уникальную точку входа.

Здесьпример, чтобы объяснить, что я имею в виду под «уникальной точкой входа»:

Мы попробовали следующее

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: apps-gateway
spec:
  selector:
    istio: ingressgateway # use istio default controller
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "*"
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: airflow-virtual-service  
spec:
  hosts:
  - "*"
  gateways:
  - apps-gateway
  http:
  - match:
    - uri:
        prefix: /airflow
    route:
    - destination:
        host: webserver.airflow.svc.cluster.local
        port:
          number: 8080
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: grafana-virtual-service  
spec:
  hosts:
  - "*"
  gateways:
  - apps-gateway
  http:
  - match:
    - uri:
        prefix: /grafana
    route:
    - destination:
        host: grafana.grafana.svc.cluster.local
        port:
          number: 3306
---
and so on

Таким образом, но я продолжаю иметь Aiflow 404 = lots of circles или аналогичный в зависимости от услуги.

Знаете ли вы, как добиться такого результата с Istio?Мы также открыты для использования Nginx или Traefik.

1 Ответ

0 голосов
/ 02 марта 2019

Итак, основываясь на комментариях:

Лучший способ показать фронтенд и бэкэнд - это разделить оба домена подстановочными символами, такими как *.domain.com.

Для внешнего интерфейса:

my-app.domain.com/

Для вспомогательных служб он всегда будет начинаться с субдомена, такого как api:

api.domain.com/foo

Для бэкэнд-сервиса вам нужно будет использовать rewrite, если ваш бэкэнд-сервис не обслуживает путь.

rewrite:
  uri: "/"

Проверьте документы Istio для получения дополнительной информации о перезаписи https://istio.io/docs/reference/config/istio.networking.v1alpha3/#Destination

...