К каким URL-адресам должен обращаться прокси расширяемого сервиса GKE - PullRequest
0 голосов
/ 27 мая 2019

Я использую Istio в Google Kubenetes Engine. Мое приложение использует gRPC и имеет контейнер прокси расширяемой службы для связи со службой Google Enpoints.

Istio в GKE по умолчанию блокирует все исходящие запросы, но это нарушает контейнер ESP, поскольку ему необходимо запросить некоторые данные из-за пределов сетки Istio.

В журналах ESP сообщалось, что он пытался получить доступ к IP 169.254.169.254 для получения метаданных, поэтому я открыл выходной канал из Istio, чтобы это произошло, и это нормально.

Но следующее, что пытается сделать ESP, - это «получить идентификатор конфигурации службы из службы развертывания». Опять же, это заблокировано, но на этот раз ошибка журнала не сообщает мне URL, к которому он пытается получить доступ, а только путь. Так что я не знаю, какой URL открыть для выхода.

Это запись в журнале:

ПРЕДУПРЕЖДЕНИЕ: повторная попытка (повторная попытка (всего = 2, подключение = нет, чтение = нет, перенаправление = нет, status = None)) после разрыва соединения, вызванного ProtocolError (Connection прервано. ', ошибка (104,' Сброс соединения по пиру '))': /v1/services/rev79.endpoints.rev79-232812.cloud.goog/rollouts?filter=status=SUCCESS

Так может ли кто-нибудь сказать мне, какие URL-адреса необходимы ESP для доступа к работе?

Ответы [ 2 ]

1 голос
/ 06 июня 2019

Для всех, кто столкнулся с этой проблемой.

ESP необходим доступ к двум отдельным конечным точкам, чтобы работать без сбоев. Они

  • servicemanagement.googleapis.com (HTTPS)
  • 169.254.269.254 (HTTP)

Для правильной работы также требуется

  • servicecontrol.googleapis.com (HTTPS)

Если у вас есть строгая выходная фильтрация в вашей сетке Istio, вам понадобятся два ресурса ServiceEntry, чтобы это произошло.

apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: endpoints-cert
spec:
  hosts:
  - metadata.google # this field does not matter
  addresses:
  - 169.254.169.254/32
  ports:
  - number: 80
    name: http
    protocol: HTTP
  resolution: NONE
  location: MESH_EXTERNAL

---

apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: endpoints-metadata
spec:
  hosts:
  - "servicemanagement.googleapis.com"
  - "servicecontrol.googleapis.com"
  ports:
  - number: 80 # may not be necessary
    name: http
    protocol: HTTP
  - number: 443
    name: https
    protocol: HTTPS
  resolution: DNS
  location: MESH_EXTERNAL

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

0 голосов
/ 27 мая 2019

В конце концов я наткнулся на то, что искал, прибегая к поиску ключевых слов в некоторых частях пути.Это похоже на то, к чему пытается обратиться ESP: https://servicemanagement.googleapis.com/v1/services/{serviceName}/rollouts/{rolloutId}

Действительно, открытие маршрута к этому хосту приводит к запуску ESP.

...