Estás consultando la documentación de Apigee Edge.
Consulta la
documentación de Apigee X. Información
Síntoma
El proxy de Envoy falla con el error HTTP 403 Forbidden
cuando se invoca a través de Adaptador de Apigee para Envoy.
Mensaje de error
Se muestra el siguiente mensaje de error:
HTTP/1.1 403 Forbidden content-length: 19 content-type: text/plain date: Tue, 03 Nov 2020 00:20:10 GMT server: istio-envoy
Causas posibles
El proxy de Envoy generará un error de HTTP 403
si se produce alguna de las siguientes condiciones:
Causa | Descripción | Instrucciones de solución de problemas aplicables para |
---|---|---|
El producto de API no está habilitado | El producto de API no está habilitado para el entorno específico. | Usuarios de la nube pública y privada de Edge |
Falta la ruta de acceso del URI del servicio de destino en el producto de API | Falta la ruta de acceso del URI del servicio de destino o no se agregó al producto de API en los recursos de la API. | Usuarios de la nube pública y privada de Edge |
Falta el nombre de host en el producto de API | Falta el nombre de host proporcionado en la solicitud a la API del cliente en el producto de API de los destinos de servicio remoto de Apigee. | Usuarios de la nube pública y privada de Edge |
Falta la clave de API en el encabezado de la solicitud | La clave de API no se pasa en el encabezado HTTP x-api-key . |
Usuarios de la nube pública y privada de Edge |
La clave de API no es válida | La clave de API pasada como parte de la solicitud no es válida. | Usuarios de la nube pública y privada de Edge |
Apigee Adapter for Envoy no puede comunicarse con el proxy de API de servicio remoto | Apigee Adapter for Envoy no puede comunicarse con el proxy de API de servicio remoto. | Usuarios de la nube pública y privada de Edge |
El proxy de Envoy no puede comunicarse con Apigee Adapter for Envoy | El proxy de Envoy no puede comunicarse con Apigee Adapter for Envoy | Usuarios de la nube pública y privada de Edge |
Antes de comenzar
- Verifica que obtienes el mensaje de respuesta
403 Forbidden
del proxy de Envoy. Por ejemplo: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
Habilita los registros de depuración:
Asegúrate de habilitar los registros de depuración en Apigee Adapter for Envoy para capturar más detalles sobre el error. De lo contrario, detén Apigee Adapter for Envoy y vuelve a iniciarlo, lo que habilita los registros de depuración con el siguiente comando:
apigee-remote-service-envoy -c config.yaml -l debug
Causa: El producto de API no está habilitado
Este error se producirá si el producto de API específico que usa el proxy de Envoy no está habilitado en el entorno específico en el que se invocan las llamadas a la API.
Diagnóstico
Sigue estos pasos para diagnosticar el problema:
- Habilita los registros de depuración como se explica en el paso 2 más arriba.
- Verifica el adaptador de Apigee para registros de Envoy y verifica que se muestre el siguiente mensaje en la sección
Authorizing request
:product: API_PRODUCT_NAME not found
Ejemplo de resultado del registro de depuración:
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
En el ejemplo anterior, se muestra que el producto de API
ENVOY-PRODUCT-1
no se encontró en Apigee Adapter for Envoy.Si deseas obtener más información sobre el adaptador de Apigee para el registro de Envoy, consulta Logging.
- Si ves este mensaje mientras autorizas la solicitud a la API, lo más probable es que esto indique que el Producto de API específico no está habilitado para un entorno específico en el que realizas las llamadas a la API.
- Para verificarlo, sigue estos pasos:
- Accede a la IU de Edge.
- En la página Publish > API products, haz clic en el producto de API específico que usaste para configurar Apigee Adapter for Envoy.
- Verifica que el entorno específico en el que realizas las solicitudes a la API esté habilitado en el producto de API.
- Si el entorno específico no está habilitado en el producto de API, entonces esa es la causa del problema.
- Si el entorno específico ya está habilitado, ve a Causa: Falta la ruta de acceso del URI del servicio de destino en el producto de API.
Resolución
Si el entorno específico no está habilitado en el producto de API, sigue estos pasos para resolver el problema:
- Accede a la IU de Edge.
- En la página Publish > API products, haz clic en el producto de API específico que usaste para configurar Apigee Adapter for Envoy.
- En la página Productos de API > Nombre del producto, haz clic en Editar.
- Para habilitar el entorno específico en el que deseas realizar solicitudes a la API, selecciona la casilla de verificación del entorno correspondiente.
- Haz clic en Guardar.
Causa: Falta la ruta de acceso del URI del servicio de destino en el producto de API
Este error se producirá si la ruta de acceso del URI del destino no se especifica en el producto de API específico que usa el proxy Envoy.
Diagnóstico
Sigue estos pasos para diagnosticar el problema:
- Habilita los registros de depuración como se explica en el paso 2 más arriba.
-
Verifica el adaptador de Apigee para registros de Envoy y verifica que se muestre el siguiente mensaje para el producto de API específico asociado a un destino específico en la sección
Authorizing request
:no path: REQUEST_URI_PATH
Ejemplo de resultado del registro de depuración:
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)
El resultado de muestra presenta el siguiente mensaje:
no path: /echo1
Esto indica que no se encontró la ruta de acceso
/echo1
en el producto de APIENVOY-PRODUCT-1
. - Si ves el mensaje
no path: REQUEST_URI_PATH
en los registros de depuración del adaptador de Apigee para Envoy, entonces esa es la causa de este problema. De lo contrario, ve a Causa: Falta el nombre de host en el producto de API.
Resolución
Si no se agrega el URI de solicitud específico al producto de API del destino específico, realiza los siguientes pasos para resolver el problema:
- Accede a la IU de Edge.
- En la página Publish > API products, haz clic en el producto de API específico que usaste para configurar Apigee Adapter for Envoy.
- En la página Productos de API > Nombre del producto, haz clic en Editar.
- En el panel Recursos de la API, agrega el URI de la solicitud a la API al producto de la API.
- Supervisa los registros de Apigee Adapter for Envoy y espera hasta que Apigee Adapter for Envoy recupere el producto de API actualizado. Luego, envía otra solicitud a la API para verificar la corrección.
Causa: Falta el nombre de host en el producto de API
Este error se producirá si la combinación de nombre de host y puerto de destino no se agrega al producto de API específico que usa el proxy Envoy.
Diagnóstico
Sigue estos pasos para diagnosticar el problema:
- Habilita los registros de depuración como se explica en el paso 2 más arriba.
Verifica el adaptador de Apigee para registros de Envoy y verifica que se muestre el siguiente mensaje para el producto de API específico asociado a un destino específico en la sección
Authorizing request
:no targets: HOSTNAME:PORT
Ejemplo de resultado del registro de depuración:
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)
En el ejemplo anterior, se muestra que la combinación de nombre de host y puerto
httpbin1:8080
no se encontró en el producto de APIENVOY-PRODUCT-1
.- Si los registros de Apigee Adapter for Envoy contienen una entrada con el mensaje
no targets: HOSTNAME:PORT
mientras se autoriza la solicitud, esta es la causa del problema. De lo contrario, ve a Causa: Falta la clave de API en el encabezado de la solicitud.
Resolución
Si la combinación de nombre de host y puerto de destino no se agrega al producto de API, realiza los siguientes pasos para resolver el problema:
- Accede a la IU de Edge.
- En la página Publish > API products, haz clic en el producto de API específico que usaste para configurar Apigee Adapter for Envoy.
- En la página Productos de API > Nombre del producto, haz clic en Editar.
En el panel Destinos de servicio remoto de Apigee, agrega el nombre de host y el puerto de destino, y haz clic en Guardar.
Si no ves la sección Destinos de servicio remoto de Apigee en la IU, agrega un atributo personalizado al producto de API con el nombre
apigee-remote-service-targets
y agrega el valor HOSTNAME:PORT con la API de Edge. Por ejemplo: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": [] }
- Una vez que se haya completado la tarea anterior, supervisa el adaptador de Apigee para registros de Envoy y espera hasta que el adaptador de Apigee para Envoy recupere el producto de API actualizado. Luego, envía otra solicitud a la API para verificar la corrección.
Causa: Falta la clave de API en el encabezado de la solicitud
Este error se producirá si no se pasa la clave de API como parte de los encabezados de la solicitud.
Diagnóstico
Sigue estos pasos para diagnosticar el problema:
- Habilita los registros de depuración como se explica en el paso 2 más arriba.
- Verifica el adaptador de Apigee para registros de Envoy y verifica que veas el mensaje
[missing authentication]
en la secciónAuthenticate error
.Ejemplo de resultado del registro de depuración:
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
El resultado de muestra anterior tiene el mensaje
[missing authentication]
. Este mensaje indica que la clave de API no se pasa como parte del encabezado de la solicitud. - Si los registros de Apigee Adapter for Envoy contienen una entrada de registro con el mensaje
[missing authentication]
en la secciónAuthenticate error
, esta es la causa del problema. De lo contrario, ve a Causa: Clave de API no válida.
Resolución
Si el error [missing authentication]
se mostró en los registros de Apigee Adapter for Envoy, realiza los siguientes pasos a fin de resolver el problema:
- Comprueba si el cliente envió la clave de API con el encabezado HTTP
x-api-key
en la solicitud a la API. De lo contrario, solicita al cliente que envíe la clave de API en el encabezado HTTPx-api-key
. - Verifica el archivo de configuración del adaptador de Apigee para Envoy y verifica que se haya cambiado el nombre del encabezado de la clave de API predeterminado,
x-api-key
, por ejemplo:apiVersion: v1 kind: ConfigMap metadata: name: apigee-remote-service-envoy namespace: apigee data: config.yaml: | global: tls: ... tenant: ... auth: target_header: api-key
En el ejemplo anterior, el nombre del encabezado de la clave de API predeterminado se modificó a
api-key
. En este caso, debes pasar la clave de API como parte del encabezadoapi-key
. - Si se cambió el nombre del encabezado de la clave de API predeterminado, solicita al cliente que use el nombre actualizado del encabezado de la clave de API, envía otra solicitud a la API y verifica si se resuelve el problema.
Causa: clave de API no válida
Este error se producirá si se pasa una clave de API no válida como parte del encabezado de la solicitud.
Diagnóstico
Sigue estos pasos para diagnosticar el problema:
- Habilita los registros de depuración como se explica en el paso 2 más arriba.
- Verifica el adaptador de Apigee para registros de Envoy y verifica que veas el mensaje
[permission denied]
en la secciónAuthenticate error
. Por lo general, esto se muestra después de que el adaptador recupera la clave de API, lo que se indica con el mensajefetchToken fetching: API_KEY
.Ejemplo de resultado del registro de depuración:
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)
En este ejemplo, la clave de API enviada en la solicitud a la API no era válida.
- Si los registros de Apigee Adapter for Envoy contienen una entrada de registro con
[permission denied]
en la secciónAuthenticate error
, esto indica que la clave de API que se pasó como parte de la solicitud no es válida y es la causa del problema. De lo contrario, ve a Causa: El adaptador de Apigee para Envoy no puede comunicarse con el proxy de API de servicio remoto.
Resolución
Si el mensaje [permission denied]
se observa en la sección Authenticate
error
en los registros del adaptador de Apigee para Envoy, realiza los siguientes pasos a fin de resolver el problema:
- Compara la clave de API enviada en la solicitud a la API con el valor de la clave de API que se encuentra en la aplicación conectada al producto de API.
- Si la clave de API que usa el cliente no es válida, solicítale al cliente que envíe la clave de API válida.
- Si la clave de API que usa el cliente es válida y aún ves el error HTTP
403
, comunícate con el equipo de asistencia de Apigee Edge para investigarlo más a fondo.
Causa: El adaptador de Apigee para Envoy no puede comunicarse con el proxy de la API de servicio remoto
Este error se producirá si Apigee Adapter for Envoy no puede comunicarse con el proxy de API de servicio remoto si el host de servicio remoto configurado no es válido.
Diagnóstico
Sigue estos pasos para diagnosticar el problema:
- Habilita los registros de depuración como se explica en el paso 2 más arriba.
-
Revisa los registros del adaptador de Apigee para Envoy y verifica que veas el siguiente mensaje:
Error retrieving products: REQUEST_URI: no such host
Ejemplo de resultado del registro de depuración:
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
En este ejemplo, Apigee Adapter for Envoy no pudo comunicarse con el proxy de API de servicio remoto porque el nombre de host proporcionado en la URL del proxy de API del servidor remoto no es válido, como lo indica el error
no such host
. - Si los registros de Apigee Adapter for Envoy contienen una entrada de registro con el mensaje
no such host
, esta es la causa del problema. De lo contrario, ve a Causa: El proxy de Envoy no puede comunicarse con el adaptador de Apigee para Envoy.
Resolución
Si los errores anteriores se muestran en los registros del adaptador de Apigee para Envoy, sigue estos pasos a fin de resolver el problema:
Verifica el archivo de configuración del adaptador de Apigee para Envoy y verifica que la URL del proxy de la API de servicio remoto sea válida.
De lo contrario, detén Apigee Adapter for Envoy, corrige la URL del proxy de API de servicio remoto en el archivo de configuración, inicia Apigee Adapter for Envoy, envía otra solicitud a la API y verifica la solución.
Configuración de muestra:
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
- Verifica que el proxy de la API
remote-service
esté implementado en el entorno perimetral relevante. De lo contrario, implementa el proxy de APIremote-service
en el entorno de Edge relevante y vuelve a intentarlo. - Verifica la conectividad de red entre Apigee Adapter for Envoy y el extremo del proxy de la API
remote-service
. Si se detectan problemas de conectividad de red, comunícate con el equipo de redes y trata de resolverlos.
Causa: El proxy de Envoy no puede comunicarse con el adaptador de Apigee para Envoy
Diagnóstico
Sigue estos pasos para diagnosticar el problema:
Asegúrate de haber habilitado los registros de depuración en Envoy. De lo contrario, detén Envoy y vuelve a iniciarlo, habilitando los registros de depuración. Luego, envía otra solicitud a la API.
Implementaciones independientes:
envoy -c envoy-config.yaml -l debug
Implementaciones basadas en Kubernetes o 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
- Verifica el adaptador de Apigee para registros de Envoy y verifica que haya una entrada de registro con el mensaje:
connecting to APIGEE_ENVOY_ADAPTER_HOST:5000
que, luego, va seguida de:
upstream connect error or disconnect/reset before headers. reset reason: ACTUAL_REASON
Ejemplo de resultado del registro de depuración:
[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'
En el ejemplo anterior, se muestra que Envoy no pudo comunicarse con Apigee Adapter for Envoy debido al motivo
connection failure
. - El
connection failure
puede deberse a varios motivos. Veamos cada una de las situaciones.
Situación 1: No se está ejecutando el proceso del adaptador
Si el proceso de Apigee Adapter for Envoy no se ejecuta, se puede producir este error.
- Verifica que el proceso del adaptador de Apigee para Envoy se esté ejecutando mediante la ejecución del siguiente comando. Si el proceso de Apigee Adapter for Envoy se ejecuta, el resultado del siguiente comando debería enumerarlo.
ps -ef | grep apigee-remote-service-envoy
- Si no se está ejecutando, entonces esa es la causa del problema.
Resolución
- Si el proceso de Apigee Adapter for Envoy no se ejecuta, inicia Apigee Adapter for Envoy.
- Realiza otra solicitud a la API y verifica si se solucionó el problema.
Situación 2: El proceso del adaptador no escucha en el puerto específico
Si el proceso de Apigee Adapter for Envoy no escucha en el puerto específico, se puede producir este error.
Si se está ejecutando el proceso del adaptador de Apigee para Envoy, verifica que haya un socket escuchando en el puerto 5000: APIGEE_ENVOY_ADAPTER_HOST:5000
. Puedes ejecutar el comando netstat
para verificar esto:
sudo netstat -lnp | grep 5000
Resultado de muestra:
sudo netstat -lnp | grep 5000 tcp6 0 0 :::5000 :::* LISTEN 1596530/./apigee-re
Si no hay un socket escuchando en el puerto 5000, esa podría ser la razón de este problema.
Resolución
- Detén el adaptador de Apigee para Envoy y vuelve a iniciarlo.
- Realiza otra solicitud a la API y verifica si se solucionó el problema.
Situación 3: Conectividad de red entre Envoy y Apigee Adapter for Envoy
- Verifica la conectividad de red entre Envoy y Apigee Adapter for Envoy:
ssh $ENVOY_HOST telnet $APIGEE_ENVOY_ADAPTER_HOST 5000
Si Telnet puede establecer una conexión TCP a Apigee Adapter for Envoy, se mostrará un resultado similar al siguiente:
telnet $APIGEE_ENVOY_ADAPTER_HOST 5000 Trying ::1... Connected to localhost. Escape character is '^]'.
- Si observas el error
Connection timed out
con telnet, esto indica que hay un problema de conectividad de red entre Envoy y Apigee Adapter for Envoy.
Resolución
Si ves algún problema de conectividad de red entre Envoy y Apigee Adapter for Envoy, comunícate con tu equipo de herramientas de redes y trata de resolverlo.
Si el problema persiste, ve a Debes recopilar información de diagnóstico.
Se debe recopilar información de diagnóstico
Si el problema persiste después de seguir las instrucciones anteriores, recopila la siguiente información de diagnóstico y, luego, comunícate con el equipo de asistencia de Apigee Edge:
-
Producto de Apigee utilizado:
Ejemplo: Apigee Edge Cloud, Apigee OPDK, Apigee híbrido, Apigee X
- Organización y entorno de Apigee
Lectura de la definición del producto de la API con la API de Edge:
curl -i -u $USER:$PASSWORD $MANAGEMENT_SERVER_ENDPOINT/v1/organizations/$ORGANIZATION/apiproducts/$API_PRODUCT
Referencia: APIs de Apigee Edge
Inicia una sesión de seguimiento en el proxy de API de
remote-service
con la IU de Apigee Edge. Reproduce este problema y comparte el archivo XML de la sesión de Trace.Referencia: Usa la herramienta Trace | Apigee Edge
Registros del adaptador de Apigee para Envoy (registros completos relacionados con el período determinado)
Implementaciones independientes:
# by default Apigee Envoy write logs to stdout and stderr, check your deployment configuration and collect logs accordingly
Implementaciones basadas en Kubernetes o Istio:
kubectl -n=apigee get pods kubectl -n=apigee logs APIGEE_REMOTE_SERVICE_ENVOY_POD_NAME > apigee-remote-service-envoy.log
- Una solicitud a la API enviada al proxy de Envoy mediante un comando
curl
(el resultado completo del comandocurl
):curl -v ENVOY_PROXY_ENDPOINT
- Una solicitud a la API que se envía al servicio de destino mediante un comando
curl
(el resultado completo del comandocurl
):curl -v TARGET_SERVICE_ENDPOINT