Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X. Информация
Symptom
При вызове через адаптер Apigee для Envoy прокси-сервер Envoy завершает работу с ошибкой HTTP 403 Forbidden.
Сообщение об ошибке
Появляется следующее сообщение об ошибке:
HTTP/1.1 403 Forbidden content-length: 19 content-type: text/plain date: Tue, 03 Nov 2020 00:20:10 GMT server: istio-envoy
Возможные причины
Прокси-сервер Envoy выдаст ошибку HTTP 403, если выполняется одно из следующих условий:
| Причина | Описание | Инструкции по устранению неполадок, применимые к |
|---|---|---|
| Продукт API не включен | Продукт API не включен для определенной среды. | Пользователи общедоступного и частного облака Edge |
| В продукте API отсутствует путь URI целевого сервиса | Путь URI целевого сервиса отсутствует или не добавлен в продукт API в разделе ресурсов API. | Пользователи общедоступного и частного облака Edge |
| Отсутствует имя хоста в продукте API | Имя хоста, указанное в запросе к API клиента, отсутствует в продукте API в целевых сервисах Apigee. | Пользователи общедоступного и частного облака Edge |
| В заголовке запроса отсутствует ключ API | Ключ API не передается в HTTP-заголовке x-api-key. |
Пользователи общедоступного и частного облака Edge |
| Недопустимый ключ API | Ключ API, переданный в составе запроса, недействителен. | Пользователи общедоступного и частного облака Edge |
| Адаптер Apigee для Envoy не может взаимодействовать с прокси-сервером API удаленного сервиса | Адаптер Apigee для Envoy не может взаимодействовать с прокси-сервером API удаленного сервиса. | Пользователи общедоступного и частного облака Edge |
| Прокси-сервер Envoy не может связаться с адаптером Apigee для Envoy | Прокси-сервер Envoy не может связаться с адаптером Apigee для Envoy | Пользователи общедоступного и частного облака Edge |
Подготовка
- Убедитесь, что вы получаете сообщение с ответом
403 Forbiddenот прокси-сервера Envoy. Пример:curl -i -H "x-api-key: $API_KEY" http://httpbin:8080/echo HTTP/1.1 403 Forbidden content-length: 19 content-type: text/plain date: Tue, 12 Jan 2021 08:18:08 GMT server: envoy RBAC: access denied
Включите журналы отладки:
Убедитесь, что в адаптере Apigee для Envoy включены журналы отладки, чтобы получать более подробную информацию об ошибке. Если нет, остановите адаптер Apigee для Envoy и запустите его снова, включив журналы отладки с помощью следующей команды:
apigee-remote-service-envoy -c config.yaml -l debug
Причина: продукт API не включен
Эта ошибка возникает, если определенный продукт API, используемый прокси-сервером Envoy, не включен в определенной среде, в которой вызываются вызовы API.
диагностика;
Чтобы диагностировать проблему, выполните следующие действия:
- Включите журналы отладки, как описано в шаге 2 выше.
- Проверьте журналы адаптера Apigee для Envoy и убедитесь, что в разделе
Authorizing requestотображается следующее сообщение:product: API_PRODUCT_NAME not found
Пример выходных данных журнала отладки
2021-01-12T08:18:08.124Z DEBUG auth/auth.go:98 Authenticate: key: 7mQIG..., claims: map[string]interface {}(nil) 2021-01-12T08:18:08.124Z DEBUG auth/verify_api_key.go:106 fetchToken fetching: 7mQIG... 2021-01-12T08:18:08.589Z DEBUG auth/auth.go:125 using api key from request 2021-01-12T08:18:08.589Z DEBUG auth/auth.go:157 Authenticate success: &auth.Context{Context:(*server.Handle r)(0xc0001a0600), ClientID:"7mQIG...", AccessToken:"", Application:"ENVOY-APP-1", APIProducts:[]string{"ENVOY-PRODUCT-1"}, Expires:time.Time{wall:0x0, ext:63746037188, loc:(*time.Location)(0x14a3be0)}, DeveloperEmail:"[---masked---]", Scopes:[] string{""}, APIKey:"7mQIG..."} 2021-01-12T08:18:08.589Z DEBUG product/manager.go:89 Authorizing request: products: [ENVOY-PRODUCT-1] scopes: [] operation: GET /echo target: httpbin:8080 - product: ENVOY-PRODUCT-1 not found
В приведенном выше примере показано, что продукт API
ENVOY-PRODUCT-1не найден в адаптере Apigee для Envoy.Подробнее о ведении журналов в адаптере Apigee для Envoy рассказывается в разделе Ведение журналов.
- Если вы видите это сообщение при авторизации запроса к API, скорее всего, это означает, что определенный продукт API не включен для среды, в которой вы выполняете вызовы API.
- Чтобы проверить это, выполните следующие действия:
- Войдите в интерфейс Edge.
- На странице Publish > API products (Публикация > Продукты API) нажмите на продукт API, который вы использовали для настройки адаптера Apigee для Envoy.
- Убедитесь, что среда, в которой вы отправляете запросы API, включена в продукте API.
- Если определенная среда не включена в продукт API, это и является причиной проблемы.
- Если нужная среда уже включена, перейдите к разделу Причина: в продукте API отсутствует путь URI целевого сервиса.
Разрешение
Если определенная среда не включена в продукт API, выполните следующие действия, чтобы устранить проблему:
- Войдите в интерфейс Edge.
- На странице Publish > API products (Публикация > Продукты API) нажмите на продукт API, который вы использовали для настройки адаптера Apigee для Envoy.
- На странице API products > Product name (Продукты API > Название продукта) нажмите Edit (Изменить).
- Установите флажок рядом с нужной средой, чтобы включить ее.
- Нажмите Сохранить.
Причина: в продукте API отсутствует путь URI целевого сервиса
Эта ошибка возникает, если путь URI целевого объекта не указан в определенном продукте API, используемом Envoy Proxy.
диагностика;
Чтобы диагностировать проблему, выполните следующие действия:
- Включите журналы отладки, как описано в шаге 2 выше.
-
Проверьте журналы адаптера Apigee для Envoy и убедитесь, что для определенного продукта API, связанного с определенной целью, в разделе
Authorizing requestотображается следующее сообщение:no path: REQUEST_URI_PATH
Пример выходных данных журнала отладки
2021-01-12T08:09:02.604Z DEBUG auth/auth.go:98 Authenticate: key: 7mQIG..., claims: map[string]interface {}(nil) 2021-01-12T08:09:02.605Z DEBUG auth/auth.go:125 using api key from request 2021-01-12T08:09:02.605Z DEBUG auth/auth.go:157 Authenticate success: &auth.Context{Context:(*server.Handle r)(0xc0001a4180), ClientID:"7mQIG...", AccessToken:"", Application:"ENVOY-APP-1", APIProducts:[]string{"ENVOY-PRODUCT-1"}, Expires:time.Time{wall:0x0, ext:63746036507, loc:(*time.Location)(0x14a3be0)}, DeveloperEmail:"[---masked---]", Scopes:[] string{""}, APIKey:"7mQIG..."} 2021-01-12T08:09:02.605Z DEBUG product/manager.go:89 Authorizing request: products: [ENVOY-PRODUCT-1] scopes: [] operation: GET /echo1 target: httpbin:8080 - product: ENVOY-PRODUCT-1 no path: /echo1 2021-01-12T08:09:02.605Z DEBUG server/authorization.go:228 sending ok (actual: PERMISSION_DENIED)
В примере выходных данных показано сообщение:
no path: /echo1
Это означает, что путь
/echo1не найден в продукте APIENVOY-PRODUCT-1. - Если в журналах отладки адаптера Apigee для Envoy вы видите сообщение
no path: REQUEST_URI_PATH, то это и есть причина проблемы. Если нет, перейдите к разделу Причина: отсутствие имени хоста в продукте API.
Разрешение
Если URI определенного запроса не добавлен в продукт API для определенной цели, выполните следующие действия, чтобы устранить проблему:
- Войдите в интерфейс Edge.
- На странице Publish > API products (Опубликовать > Продукты API) нажмите на продукт API, который вы использовали для настройки адаптера Apigee для Envoy.
- На странице API products > Product name (Продукты API > Название продукта) нажмите Edit (Изменить).
- На панели Ресурсы API добавьте URI запроса к API в продукт API.
- Отслеживайте журналы адаптера Apigee для Envoy и дождитесь, пока адаптер Apigee для Envoy получит обновленный продукт API. После этого отправьте ещё один запрос к API, чтобы проверить, была ли исправлена проблема.
Причина: в продукте API отсутствует имя хоста
Эта ошибка возникает, если целевое имя хоста и комбинация портов не добавлены в определенный продукт API, используемый Envoy Proxy.
диагностика;
Чтобы диагностировать проблему, выполните следующие действия:
- Включите журналы отладки, как описано в шаге 2 выше.
Проверьте журналы адаптера Apigee для Envoy и убедитесь, что для определенного продукта API, связанного с определенной целью, в разделе
Authorizing requestотображается следующее сообщение:no targets: HOSTNAME:PORT
Пример выходных данных журнала отладки
2021-01-12T08:12:06.019Z DEBUG auth/auth.go:98 Authenticate: key: 7mQIG..., claims: map[string]interface {}(nil) 2021-01-12T08:12:06.019Z DEBUG auth/auth.go:125 using api key from request 2021-01-12T08:12:06.019Z DEBUG auth/auth.go:157 Authenticate success: &auth.Context{Context:(*server.Handle r)(0xc0001a4180), ClientID:"7mQIG...", AccessToken:"", Application:"ENVOY-APP-1", APIProducts:[]string{"ENVOY-PRODUCT-1"}, Expires:time.Time{wall:0x0, ext:63746036507, loc:(*time.Location)(0x14a3be0)}, DeveloperEmail:"[---masked---]", Scopes:[] string{""}, APIKey:"7mQIG..."} 2021-01-12T08:12:06.019Z DEBUG product/manager.go:89 Authorizing request: products: [ENVOY-PRODUCT-1] scopes: [] operation: GET /echo target: httpbin1:8080 - product: ENVOY-PRODUCT-1 no targets: httpbin1:8080 2021-01-12T08:12:06.020Z DEBUG server/authorization.go:228 sending ok (actual: PERMISSION_DENIED)
В приведенном выше примере показано, что сочетание имени хоста и порта
httpbin1:8080не найдено в продукте APIENVOY-PRODUCT-1.- Если в журналах адаптера Apigee для Envoy есть запись с сообщением
no targets: HOSTNAME:PORTпри авторизации запроса, то это и есть причина проблемы. Если нет, перейдите к разделу Причина: в заголовке запроса отсутствует ключ API.
Разрешение
Если целевое имя хоста и комбинация портов не добавлены в продукт API, выполните следующие действия, чтобы устранить проблему:
- Войдите в интерфейс Edge.
- На странице Publish > API products (Публикация > Продукты API) нажмите на продукт API, который вы использовали для настройки адаптера Apigee для Envoy.
- На странице API products > Product name (Продукты API > Название продукта) нажмите Edit (Изменить).
На панели Цели удаленного сервиса Apigee добавьте целевое имя хоста и порт и нажмите Сохранить.
Если в интерфейсе нет раздела Apigee remote service targets (Целевые сервисы удаленного сервиса Apigee), добавьте в продукт API настраиваемый атрибут с именем
apigee-remote-service-targetsи значением HOSTNAME:PORT с помощью API Edge. Пример:curl https://api.enterprise.apigee.com/v1/organizations/$ORG/apiproducts/$ENVOY_PRODUCT \ -X GET \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Content-Type:application/json" \ -d \ { "apiResources": [ "/echo", "/verifyApiKey" ], "approvalType": "auto", "attributes": [ { "name": "access", "value": "public" }, { "name": "apigee-remote-service-targets", "value": "localhost:8080" } ], "createdAt": 1610435989556, "createdBy": "---masked---", "description": "", "displayName": "ENVOY-PRODUCT-1", "environments": [ "test" ], "lastModifiedAt": 1612234134060, "lastModifiedBy": "---masked---", "name": "ENVOY-PRODUCT-1", "proxies": [ "remote-service" ], "scopes": [] }- После этого отслеживайте журналы адаптера Apigee для Envoy и дождитесь, пока адаптер Apigee для Envoy получит обновленный продукт API. После этого отправьте ещё один запрос к API, чтобы проверить, устранена ли проблема.
Причина: в заголовке запроса отсутствует ключ API
Эта ошибка возникает, если ключ API не передан в заголовках запроса.
диагностика;
Чтобы диагностировать проблему, выполните следующие действия:
- Включите журналы отладки, как описано в шаге 2 выше.
- Проверьте журналы адаптера Apigee для Envoy и убедитесь, что сообщение
[missing authentication]находится в разделеAuthenticate error.Пример выходных данных журнала отладки
2021-01-12T08:20:31.461Z DEBUG auth/auth.go:98 Authenticate: key: , claims: map[string]interface {}(nil) 2021-01-12T08:20:31.461Z DEBUG auth/auth.go:159 Authenticate error: &auth.Context{Context:(*server.Handler) (0xc0001a0600), ClientID:"", AccessToken:"", Application:"", APIProducts:[]string(nil), Expires:time.Time{wall:0x0, ext:0, loc:(*time.Location)(nil)}, DeveloperEmail:"", Scopes:[]string(nil), APIKey:""} [missing authentication] 2021-01-12T08:20:31.461Z DEBUG server/authorization.go:205 sending denied: UNAUTHENTICATED 2021-01-12T08:20:32.448Z DEBUG server/header_context.go:68 No context header x-apigee-api, using target header : :authority
В примере выше показано сообщение
[missing authentication]. Это сообщение означает, что ключ API не передается как часть заголовка запроса. - Если в журналах адаптера Apigee для Envoy есть запись в журнале с сообщением
[missing authentication]в разделеAuthenticate error, то это причина проблемы. Если нет, перейдите к разделу Причина: недействительный ключ API.
Разрешение
Если в журналах адаптера Apigee для Envoy появилась ошибка [missing authentication], выполните следующие действия, чтобы устранить проблему:
- Проверьте, отправил ли клиент ключ API с помощью заголовка HTTP
x-api-keyв запросе к API. Если нет, попросите клиента отправлять ключ API в заголовке HTTPx-api-key. - Проверьте файл конфигурации адаптера Apigee для Envoy и убедитесь, что название заголовка ключа API по умолчанию
x-api-keyизменено, например:apiVersion: v1 kind: ConfigMap metadata: name: apigee-remote-service-envoy namespace: apigee data: config.yaml: | global: tls: ... tenant: ... auth: target_header: api-keyВ примере выше название заголовка ключа API по умолчанию изменено на
api-key. В этом случае вам нужно передать ключ API как часть заголовкаapi-key. - Если название заголовка ключа API по умолчанию было изменено, попросите клиента использовать обновленное название заголовка ключа API и отправить ещё один запрос к API. Проверьте, устранит ли это проблему.
Причина: недействительный ключ API
Эта ошибка возникает, если в заголовке запроса указан недействительный ключ API.
диагностика;
Чтобы диагностировать проблему, выполните следующие действия:
- Включите журналы отладки, как описано в шаге 2 выше.
- Проверьте журналы адаптера Apigee для Envoy и убедитесь, что в разделе
Authenticate errorесть сообщение[permission denied]. Обычно это сообщение появляется после того, как адаптер получает ключ API, о чем свидетельствует сообщениеfetchToken fetching: API_KEY.Пример выходных данных журнала отладки
2021-01-12T05:01:07.198Z DEBUG auth/auth.go:98 Authenticate: key: 123, claims: map[string]interface {}(nil) 2021-01-12T05:01:07.198Z DEBUG auth/verify_api_key.go:106 fetchToken fetching: API_KEY 2021-01-12T05:01:09.102Z DEBUG server/header_context.go:68 No context header x-apigee-api, using target header: :authority 2021-01-12T05:01:09.831Z DEBUG auth/auth.go:159 Authenticate error: &auth.Context{Context:(*server.Handler)(0xc0001640c0), ClientID:"", AccessToken:"", Application:"", APIProducts:[]string(nil), Expires:time.Time{wall:0x0, ext:0, loc:(*time.Location)(nil)}, DeveloperEmail:"", Scopes:[]string(nil), APIKey:""} [permission denied] 2021-01-12T05:01:09.832Z DEBUG server/authorization.go:228 sending ok (actual: PERMISSION_DENIED)
В этом примере ключ API, отправленный в запросе к API, был недействительным.
- Если в журналах адаптера Apigee для Envoy есть запись в журнале с
[permission denied]в разделеAuthenticate error, это означает, что ключ API, переданный в составе запроса, недействителен и является причиной проблемы. Если нет, перейдите к разделу Причина: адаптер Apigee для Envoy не может взаимодействовать с прокси-сервером API удаленного сервиса.
Разрешение
Если в разделе Authenticate
error журналов адаптера Apigee для Envoy вы видите сообщение [permission denied], выполните следующие действия, чтобы устранить проблему:
- Сравните ключ API, отправленный в запросе к API, со значением ключа API, найденным в приложении, подключенном к продукту API.
- Если ключ API, используемый клиентом, недействителен, попросите клиента отправить действительный ключ API.
- Если ключ API, используемый клиентом, действителен, но вы по-прежнему видите ошибку HTTP
403, обратитесь в службу поддержки Apigee Edge.
Причина: адаптер Apigee для Envoy не может взаимодействовать с прокси-сервером API удаленного сервиса
Эта ошибка возникает, если адаптер Apigee для Envoy не может взаимодействовать с прокси API удаленного сервиса, поскольку хост удаленного сервиса настроен неправильно.
диагностика;
Чтобы диагностировать проблему, выполните следующие действия:
- Включите журналы отладки, как описано в шаге 2 выше.
-
Проверьте журналы адаптера Apigee для Envoy и убедитесь, что в них есть следующее сообщение:
Error retrieving products: REQUEST_URI: no such host
Пример выходных данных журнала отладки
2021-01-12T08:29:06.499Z DEBUG product/manager.go:188 retrieving products from: https://foo/remote-service/products 2021-01-12T08:29:06.505Z ERROR product/manager.go:164 Error retrieving products: GET "https://foo/remote-service/pro ducts": dial tcp: lookup foo on 169.254.169.254:53: no such host github.com/apigee/apigee-remote-service-golib/product.(*manager).start.func1 /go/pkg/mod/github.com/apigee/apigee-remote-service-golib@v1.4.0/product/manager.go:164 github.com/apigee/apigee-remote-service-golib/util.(*Looper).Run /go/pkg/mod/github.com/apigee/apigee-remote-service-golib@v1.4.0/util/looper.go:87 github.com/apigee/apigee-remote-service-golib/util.(*Looper).Start.func1 /go/pkg/mod/github.com/apigee/apigee-remote-service-golib@v1.4.0/util/looper.go:59
В этом примере адаптер Apigee для Envoy не смог связаться с прокси-сервером API удаленного сервиса, поскольку имя хоста, указанное в URL прокси-сервера API удаленного сервера, недействительно, о чем свидетельствует ошибка
no such host. - Если в журналах адаптера Apigee для Envoy есть запись в журнале с сообщением
no such host, то это и есть причина проблемы. Если нет, перейдите к разделу Причина: прокси-сервер Envoy не может взаимодействовать с адаптером Apigee для Envoy.
Разрешение
Если в журналах адаптера Apigee для Envoy отображаются указанные выше ошибки, выполните следующие действия, чтобы устранить проблему:
Проверьте файл конфигурации адаптера Apigee для Envoy и убедитесь, что указанный URL прокси-сервера API удаленного сервиса действителен.
Если нет, остановите адаптер Apigee для Envoy, исправьте URL прокси-сервера API удаленного сервиса в файле конфигурации, запустите адаптер Apigee для Envoy и отправьте ещё один запрос к API, чтобы проверить исправление.
Пример конфигурации
apiVersion: v1 kind: ConfigMap metadata: name: apigee-remote-service-envoy namespace: apigee data: config.yaml: | tenant: internal_api: https://istioservices.apigee.net/edgemicro remote_service_api: https://ORG-ENV.apigee.net/remote-service org_name: ORG env_name: ENV key: KEY secret: SECRET- Убедитесь, что прокси-сервер API
remote-serviceразвернут в нужной среде Edge. Если нет, разверните прокси-сервер APIremote-serviceв нужной среде Edge и попробуйте ещё раз. - Проверьте сетевое подключение между адаптером Apigee для Envoy и конечной точкой прокси-сервера API
remote-service. Если будут обнаружены проблемы с подключением к сети, свяжитесь с командой по работе с сетью и попробуйте устранить проблему.
Причина: прокси-сервер Envoy не может взаимодействовать с адаптером Apigee для Envoy
диагностика;
Чтобы диагностировать проблему, выполните следующие действия:
Убедитесь, что в Envoy включены журналы отладки. Если нет, остановите Envoy и запустите его снова, включив ведение журнала отладки. а затем отправьте другой запрос к API.
Отдельные развертывания
envoy -c envoy-config.yaml -l debug
Развертывания на основе Kubernetes/Istio
kubectl -n=istio-system get pods kubectl -n=istio-system exec -it INGRESS_GATEWAY_NAME bash -- curl -X POST localhost:15000/logging?connection=debug
- Проверьте журналы адаптера Apigee для Envoy и убедитесь, что в них есть запись в журнале с сообщением:
connecting to APIGEE_ENVOY_ADAPTER_HOST:5000
а затем:
upstream connect error or disconnect/reset before headers. reset reason: ACTUAL_REASON
Пример выходных данных журнала отладки
[2021-03-23 05:44:41.867][1303661][debug][connection] [external/envoy/source/common/network/connection_impl.cc:769] [C4] connecting to 127.0.0.1:5000 [2021-03-23 05:44:41.867][1303661][debug][connection] [external/envoy/source/common/network/connection_impl.cc:785] [C4] connection in progress [2021-03-23 05:44:41.868][1303661][debug][http2] [external/envoy/source/common/http/http2/codec_impl.cc:1173] [C4] updating connection-level initial window size to 268435456 [2021-03-23 05:44:41.869][1303661][debug][connection] [external/envoy/source/common/network/connection_impl.cc:634] [C4] delayed connection error: 111 [2021-03-23 05:44:41.869][1303661][debug][connection] [external/envoy/source/common/network/connection_impl.cc:203] [C4] closing socket: 0 [2021-03-23 05:44:41.869][1303661][debug][client] [external/envoy/source/common/http/codec_client.cc:96] [C4] disconnect. resetting 0 pending requests [2021-03-23 05:44:41.869][1303661][debug][pool] [external/envoy/source/common/conn_pool/conn_pool_base.cc:314] [C4] client disconnected, failure reason: [2021-03-23 05:44:41.869][1303661][debug][router] [external/envoy/source/common/router/router.cc:1031] [C0][S6149963213555558594] upstream reset: reset reason: connection failure, transport failure reason: [2021-03-23 05:44:41.869][1303661][debug][http] [external/envoy/source/common/http/async_client_impl.cc:100] async http request response headers (end_stream=true): ':status', '200' 'content-type', 'application/grpc' 'grpc-status', '14' 'grpc-message', 'upstream connect error or disconnect/reset before headers. reset reason: connection failure'
В приведенном выше примере показано, что Envoy не удалось установить связь с адаптером Apigee для Envoy по причине
connection failure. - Причин появления значка
connection failureможет быть несколько. Рассмотрим каждый из этих сценариев.
Сценарий 1. Процесс адаптера не запущен
Эта ошибка может возникнуть, если процесс адаптера Apigee для Envoy не запущен.
- Убедитесь, что процесс адаптера Apigee для Envoy запущен, выполнив следующую команду: Если процесс адаптера Apigee для Envoy запущен, он должен быть указан в результатах следующей команды:
ps -ef | grep apigee-remote-service-envoy
- Если он не запущен, то это и есть причина проблемы.
Разрешение
- Если процесс адаптера Apigee для Envoy не запущен, запустите его.
- Отправьте ещё один запрос к API и проверьте, устранена ли проблема.
Сценарий 2. Процесс адаптера не прослушивает определенный порт
Если процесс адаптера Apigee для Envoy не прослушивает определенный порт, может возникнуть эта ошибка.
Если процесс адаптера Apigee для Envoy запущен, убедитесь, что сокет прослушивает порт 5000: APIGEE_ENVOY_ADAPTER_HOST:5000. Чтобы проверить это, можно выполнить команду netstat:
sudo netstat -lnp | grep 5000
Пример результата:
sudo netstat -lnp | grep 5000 tcp6 0 0 :::5000 :::* LISTEN 1596530/./apigee-re
Если сокет не прослушивает порт 5000, это может быть причиной проблемы.
Разрешение
- Остановите адаптер Apigee для Envoy и запустите его снова.
- Отправьте ещё один запрос к API и проверьте, устранена ли проблема.
Сценарий 3. Сетевое подключение между Envoy и адаптером Apigee для Envoy
- Проверьте сетевое подключение между Envoy и адаптером Apigee для Envoy:
ssh $ENVOY_HOST telnet $APIGEE_ENVOY_ADAPTER_HOST 5000
Если telnet сможет установить TCP-подключение к адаптеру Apigee для Envoy, будет показан вывод, похожий на приведенный ниже.
telnet $APIGEE_ENVOY_ADAPTER_HOST 5000 Trying ::1... Connected to localhost. Escape character is '^]'.
- Если при использовании telnet вы видите ошибку
Connection timed out, это означает, что между Envoy и адаптером Apigee для Envoy есть проблема с подключением к сети.
Разрешение
Если вы обнаружите проблемы с подключением к сети между Envoy и адаптером Apigee для Envoy, обратитесь к команде по работе с сетью и попробуйте устранить проблему.
Если проблема не устранена, перейдите к разделу Сбор диагностической информации.
Необходимо собрать диагностическую информацию
Если после выполнения приведенных выше инструкций проблема не исчезнет, соберите указанную ниже диагностическую информацию и обратитесь в службу поддержки Apigee Edge.
-
Используемый продукт Apigee:
Пример: Apigee Edge Cloud, Apigee OPDK, Apigee Hybrid, Apigee X
- Организация и среда Apigee
Определение продукта API, прочитанное с помощью Edge API:
curl -i -u $USER:$PASSWORD $MANAGEMENT_SERVER_ENDPOINT/v1/organizations/$ORGANIZATION/apiproducts/$API_PRODUCT
Справочная информация: API Apigee Edge
Начните сеанс трассировки в прокси-сервере API
remote-serviceс помощью интерфейса Apigee Edge. Воспроизведите проблему и поделитесь XML-файлом сеанса трассировки.Справочная информация: Использование инструмента трассировки | Apigee Edge
Журналы адаптера Apigee для Envoy (полные журналы за указанный период времени)
Отдельные развертывания
# by default Apigee Envoy write logs to stdout and stderr, check your deployment configuration and collect logs accordingly
Развертывания на основе Kubernetes/Istio
kubectl -n=apigee get pods kubectl -n=apigee logs APIGEE_REMOTE_SERVICE_ENVOY_POD_NAME > apigee-remote-service-envoy.log
- Запрос к API, отправленный прокси-серверу Envoy с помощью команды
curl(полный вывод командыcurl):curl -v ENVOY_PROXY_ENDPOINT
- Запрос к API, отправленный целевому сервису с помощью команды
curl(полный вывод командыcurl):curl -v TARGET_SERVICE_ENDPOINT