Доступ к выходу службы HTTPS, istio v1.0 - PullRequest
0 голосов
/ 21 сентября 2018

Я пытаюсь включить развертывание в пространстве имен шлюза для отправки метрик во внешнюю службу по номеру engine-report.apollodata.com

. Я написал следующие записи службы и правила виртуальной службы согласно Istioдокументация пока трафик не может получить доступ к конечной точке.

apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: apollo-engine-ext
  namespace: {{ .Release.Namespace }}
  labels:
      chart: {{ .Chart.Name }}
      release: {{ .Release.Name }}
      heritage: {{ .Release.Service }}
spec:
  hosts:
  - '*.apollodata.com'
  ports:
  - number: 80
    name: http
    protocol: HTTP
  - number: 443
    name: https
    protocol: HTTPS
  resolution: DNS
  location: MESH_EXTERNAL

---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: apollo-engine-ext
  namespace: {{ .Release.Namespace }}
  labels:
      chart: {{ .Chart.Name }}
      release: {{ .Release.Name }}
      heritage: {{ .Release.Service }}
spec:
  hosts:
  - '*.apollodata.com'
  tls:
  - match:
    - port: 443
      sni_hosts:
      - '*.apollodata.com'
    route:
    - destination:
        host: '*.apollodata.com'
        port:
          number: 443
      weight: 100

Что может быть причиной этой проблемы

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Я думаю, что проблема в том, что вы используете разрешение DNS в ServiceEntry с хостом с подстановочными знаками.Согласно документации , если в ServiceEntry нет конечных точек, разрешение DNS будет работать только в том случае, если хост не является подстановочным знаком.

Если конечные точки разрешаются приложением в DNS, тоэто должно работать, если вы установите разрешение NONE.

0 голосов
/ 24 сентября 2018

При использовании следующей конфигурации проблема была решена.Я все еще не уверен относительно того, что вызвало проблему.В пояснениях некоторые комментарии к моему первоначальному вопросу.Используя исходную конфигурацию, можно было свернуть конечные точки http://engine -report.apollodata.com и https://engine -report.apollodata.com , но, как и предполагалось, через службу istioвнешние конечные точки сетки, такие как http://www.google.com, были недоступны.

apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: "apollo-engine-ext"
  namespace: {{ .Release.Namespace }}
  labels:
      chart: {{ .Chart.Name }}
      release: {{ .Release.Name }}
      heritage: {{ .Release.Service }}
spec:
  hosts:
  - apollodata.com
  - engine-report.apollodata.com
  - apollographql.com
  location: MESH_EXTERNAL
  ports:
  - number: 443
    name: https
    protocol: HTTPS
  - number: 80
    name: http
    protocol: HTTP
  resolution: DNS

---

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: "apollo-engine-ext"
  namespace: {{ .Release.Namespace }}
  labels:
      chart: {{ .Chart.Name }}
      release: {{ .Release.Name }}
      heritage: {{ .Release.Service }}
spec:
  hosts:
  - apollodata.com
  - engine-report.apollodata.com
  - apollographql.com
  tls:
  - match:
    - port: 443
      sniHosts:
      - apollodata.com
    route:
    - destination:
        host: apollodata.com
  - match:
    - port: 443
      sniHosts:
      - engine-report.apollodata.com
    route:
    - destination:
        host: engine-report.apollodata.com
  - match:
    - port: 443
      sniHosts:
      - apollographql.com
    route:
    - destination:
        host: apollographql.com
...