К каким URL-адресам должен обращаться прокси-сервер расширяемой службы GKE

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

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

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

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

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

WARNING:Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', error(104, 'Connection reset by peer'))': /v1/services/rev79.endpoints.rev79-232812.cloud.goog/rollouts?filter=status=SUCCESS

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

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
125
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

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

Ответ принят как подходящий

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

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

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

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