O proxy Envoy falha com o erro HTTP 403 Forbidden no adaptador da Apigee para Envoy

Você está vendo a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
informações

Sintoma

O Envoy Proxy falha com o erro HTTP 403 Forbidden quando invocado pelo Adaptador da Apigee para Envoy.

Mensagem de erro

A seguinte mensagem de erro é exibida:

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 possíveis

O proxy Envoy vai gerar um erro HTTP 403 se uma das seguintes condições ocorrer:

Causa Descrição Instruções de solução de problemas aplicáveis para
O produto da API não está ativado O produto da API não está ativado para o ambiente específico. Usuários de nuvens públicas e privadas de borda
Caminho do URI do serviço de destino ausente no produto da API O caminho do URI do serviço de destino está ausente ou não foi adicionado ao produto da API nos recursos da API. Usuários de nuvens públicas e privadas de borda
Nome do host ausente no produto da API O nome do host fornecido na solicitação de API do cliente está ausente no produto da API nos destinos de serviço remoto da Apigee. Usuários de nuvens públicas e privadas de borda
Chave de API ausente no cabeçalho da solicitação A chave de API não é transmitida no cabeçalho HTTP x-api-key. Usuários de nuvens públicas e privadas de borda
Chave de API inválida A chave de API transmitida como parte da solicitação é inválida. Usuários de nuvens públicas e privadas de borda
O adaptador da Apigee para Envoy não pode se comunicar com o proxy de API de serviço remoto O adaptador da Apigee para Envoy não pode se comunicar com o proxy da API de serviço remoto. Usuários de nuvens públicas e privadas de borda
O proxy do Envoy não pode se comunicar com o adaptador da Apigee para Envoy O proxy Envoy não se comunica com o adaptador da Apigee para Envoy Usuários de nuvens públicas e privadas de borda

Antes de começar

  1. Verifique se você está recebendo a mensagem de resposta 403 Forbidden do proxy Envoy. Por exemplo:
    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
    
  2. Ative os registros de depuração:

    Verifique se você ativou os registros de depuração no adaptador da Apigee para Envoy para capturar mais detalhes sobre o erro. Caso contrário, pare o adaptador da Apigee para Envoy e inicie-o novamente, ativando os registros de depuração usando o seguinte comando:

    apigee-remote-service-envoy -c config.yaml -l debug
    

Causa: o produto de API não está ativado

Esse erro ocorrerá se o produto de API específico usado pelo Envoy Proxy não estiver ativado no ambiente específico em que as chamadas de API são invocadas.

Diagnóstico

Siga estas etapas para diagnosticar o problema:

  1. Ative os registros de depuração, conforme explicado na etapa 2 acima.
  2. Verifique os registros do adaptador da Apigee para Envoy e confira se a mensagem a seguir é exibida na seção Authorizing request:
    product: API_PRODUCT_NAME not found
    

    Exemplo de saída do registro de depuração:

    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
    

    O exemplo acima mostra que o produto da API ENVOY-PRODUCT-1 não foi encontrado no adaptador da Apigee para Envoy.

    Para mais informações sobre a geração de registros do adaptador da Apigee para Envoy, consulte Geração de registros.

  3. Se você vir essa mensagem ao autorizar a solicitação de API, é provável que o produto específico da API não esteja ativado para um ambiente em que você está fazendo chamadas de API.
  4. Siga estas etapas para verificar isso:
    1. Faça login na interface do Edge.
    2. Na página Publicar > Produtos de API, clique no produto de API específico que você usou para configurar o adaptador da Apigee para Envoy.
    3. Verifique se o ambiente específico em que você está fazendo as solicitações de API está ativado no produto de API.
    4. Se o ambiente específico não estiver ativado no produto da API, essa é a causa do problema.
  5. Se o ambiente específico já estiver ativado, acesse Causa: caminho do URI do serviço de destino ausente no produto da API.

Resolução

Se o ambiente específico não estiver ativado no produto de API, siga estas etapas para resolver o problema:

  1. Faça login na interface do Edge.
  2. Na página Publicar > Produtos de API, clique no produto de API específico que você usou para configurar o adaptador da Apigee para Envoy.
  3. Na página Produtos da API > Nome do produto, clique em Editar.
  4. Marque a caixa de seleção do ambiente relevante para ativar o ambiente em que você quer fazer solicitações de API.
  5. Clique em Salvar.

Causa: caminho de URI do serviço de destino ausente no produto de API

Esse erro ocorrerá se o caminho do URI do destino não for especificado no produto de API específico usado pelo Envoy Proxy.

Diagnóstico

Siga estas etapas para diagnosticar o problema:

  1. Ative os registros de depuração, conforme explicado na etapa 2 acima.
  2. Verifique os registros do adaptador da Apigee para Envoy e confira se a mensagem a seguir é exibida para o produto de API específico associado a um destino específico na seção Authorizing request:

    no path: REQUEST_URI_PATH
    

    Exemplo de saída do registro de depuração:

    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)

    O exemplo de saída mostra a mensagem:

    no path: /echo1
    

    Isso indica que o caminho /echo1 não foi encontrado no produto de API ENVOY-PRODUCT-1.

  3. Se a mensagem no path: REQUEST_URI_PATH aparecer nos registros de depuração do adaptador da Apigee para Envoy, essa é a causa do problema. Caso contrário, acesse Causa: nome de host ausente no produto da API.

Resolução

Se o URI de solicitação específico não for adicionado ao produto da API para o destino específico, siga estas etapas para resolver o problema:

  1. Faça login na interface do Edge.
  2. Na página Publicar > Produtos de API, clique no produto de API específico que você usou para configurar o adaptador da Apigee para Envoy.
  3. Na página Produtos da API > Nome do produto, clique em Editar.
  4. No painel Recursos da API, adicione o URI da solicitação de API ao produto de API.
  5. Monitore os registros do adaptador da Apigee para Envoy e aguarde até que o adaptador da Apigee para Envoy busque o produto de API atualizado. Depois, envie outra solicitação de API para verificar a correção.

Causa: nome do host ausente no produto de API

Esse erro ocorrerá se a combinação de nome e porta de destino não for adicionada ao produto de API específico usado pelo Envoy Proxy.

Diagnóstico

Siga estas etapas para diagnosticar o problema:

  1. Ative os registros de depuração, conforme explicado na etapa 2 acima.
  2. Verifique os registros do adaptador da Apigee para Envoy e confira se a mensagem a seguir é exibida para o produto de API específico associado a um destino específico na seção Authorizing request:

    no targets: HOSTNAME:PORT
    

    Exemplo de saída do registro de depuração:

    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)

    O exemplo acima mostra que a combinação de nome de host e porta httpbin1:8080 não foi encontrada no produto de API ENVOY-PRODUCT-1.

  3. Se os registros do adaptador da Apigee para Envoy contiverem uma entrada com a mensagem no targets: HOSTNAME:PORT ao autorizar a solicitação, essa vai ser a causa do problema. Caso contrário, acesse Causa: chave de API ausente no cabeçalho da solicitação.

Resolução

Se a combinação de nome e porta de destino não for adicionada ao produto de API, siga estas etapas para resolver o problema:

  1. Faça login na interface do Edge.
  2. Na página Publicar > Produtos de API, clique no produto de API específico que você usou para configurar o adaptador da Apigee para Envoy.
  3. Na página Produtos da API > Nome do produto, clique em Editar.
  4. No painel Apigee remoto service destinos, adicione o nome do host e a porta de destino e clique em Salvar.

    Se você não vir a seção Apigee Remote service destination na interface, adicione um atributo personalizado ao produto de API com o nome apigee-remote-service-targets e adicione o valor de HOSTNAME:PORT usando a API Edge. Exemplo:

    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": []
    }
    
  5. Depois que a tarefa acima for concluída, monitore os registros do adaptador da Apigee para Envoy e aguarde até que o adaptador da Apigee para Envoy busque o produto de API atualizado. Em seguida, envie outra solicitação de API para verificar a correção.

Causa: chave de API ausente no cabeçalho da solicitação

Esse erro ocorrerá se a chave de API não for transmitida como parte dos cabeçalhos da solicitação.

Diagnóstico

Siga estas etapas para diagnosticar o problema:

  1. Ative os registros de depuração, conforme explicado na etapa 2 acima.
  2. Verifique os registros do adaptador da Apigee para Envoy e confira se a mensagem [missing authentication] aparece na seção Authenticate error.

    Exemplo de saída do registro de depuração:

    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

    O exemplo de saída mostrado acima tem a mensagem [missing authentication]. Essa mensagem indica que a chave de API não foi transmitida como parte do cabeçalho da solicitação.

  3. Se os registros do adaptador da Apigee para Envoy contiverem uma entrada de registro com a mensagem [missing authentication] na seção Authenticate error , essa será a causa do problema. Caso contrário, acesse Causa: chave de API inválida.

Resolução

Se o erro [missing authentication] foi exibido nos registros do adaptador da Apigee para Envoy, execute as etapas a seguir para resolver o problema:

  1. Verifique se o cliente enviou a chave de API usando o cabeçalho HTTP x-api-key na solicitação de API. Caso contrário, solicite que o cliente envie a chave de API no cabeçalho HTTP x-api-key.
  2. Verifique o arquivo de configuração do adaptador da Apigee para Envoy e se o nome do cabeçalho da chave de API padrão x-api-key foi alterado. Para um exemplo:
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: apigee-remote-service-envoy
      namespace: apigee
    data:
      config.yaml: |
        global:
          tls:
            ...
        tenant:
          ...
        auth:
          target_header: api-key
    

    No exemplo acima, o nome do cabeçalho padrão da chave de API foi modificado para api-key. Nesse caso, é necessário transmitir a chave de API como parte do cabeçalho api-key.

  3. Se o nome do cabeçalho padrão da chave de API tiver sido alterado, solicite ao cliente o uso do nome atualizado e envie outra solicitação de API e verifique se o problema foi resolvido.

Causa: chave de API inválida

Esse erro ocorrerá se uma chave de API inválida for passada como parte do cabeçalho da solicitação.

Diagnóstico

Siga estas etapas para diagnosticar o problema:

  1. Ative os registros de depuração, conforme explicado na etapa 2 acima.
  2. Verifique os registros do adaptador da Apigee para Envoy e confira se a mensagem [permission denied] aparece na seção Authenticate error. Isso geralmente é mostrado depois que a chave de API é buscada pelo adaptador, o que é indicado pela mensagem fetchToken fetching: API_KEY.

    Exemplo de saída do registro de depuração:

    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)
    

    Neste exemplo, a chave de API enviada na solicitação de API não era válida.

  3. Se os registros do adaptador da Apigee para Envoy contiverem uma entrada de registro com [permission denied] na seção Authenticate error , isso vai indicar que a chave de API transmitida como parte da solicitação é inválida e é a causa do problema. Caso contrário, acesse Causa: o adaptador da Apigee para Envoy não consegue se comunicar com o proxy de API de serviço remoto.

Resolução

Se a mensagem [permission denied] for observada na seção Authenticate error nos registros do adaptador da Apigee para Envoy, execute as etapas a seguir para resolver o problema:

  1. Compare a chave de API enviada na solicitação de API em relação ao valor da chave encontrado no aplicativo conectado ao produto da API.
  2. Se a chave de API usada pelo cliente não for válida, solicite que o cliente envie a chave de API válida.
  3. Se a chave de API usada pelo cliente for válida e se você ainda estiver vendo um erro HTTP 403, entre em contato com o suporte do Apigee Edge para investigar mais.

Causa: o adaptador da Apigee para Envoy não consegue se comunicar com o proxy de API de serviço remoto

Esse erro ocorrerá se o adaptador da Apigee para Envoy não conseguir se comunicar com o proxy da API de serviço remoto se o host de serviço remoto configurado for inválido.

Diagnóstico

Siga estas etapas para diagnosticar o problema:

  1. Ative os registros de depuração, conforme explicado na etapa 2 acima.
  2. Verifique os registros do adaptador da Apigee para Envoy e confira se a seguinte mensagem é exibida:

    Error retrieving products: REQUEST_URI: no such host
    

    Exemplo de saída do registro de depuração:

    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
    

    Neste exemplo, o adaptador da Apigee para Envoy não conseguiu se comunicar com o proxy de serviço remoto da API porque o nome do host fornecido no URL do proxy da API do servidor remoto não é válido, conforme indicado pelo erro no such host .

  3. Se os registros do adaptador da Apigee para Envoy tiverem uma entrada de registro com a mensagem no such host, essa vai ser a causa do problema. Caso contrário, acesse Causa: o proxy Envoy não consegue se comunicar com o adaptador da Apigee para Envoy.

Resolução

Se os erros acima forem exibidos nos registros do adaptador da Apigee para Envoy, execute as etapas a seguir para resolver o problema:

  1. Verifique o arquivo de configuração do adaptador da Apigee para Envoy e confira se o URL do proxy da API de serviço remoto fornecido é válido.

    Caso contrário, interrompa o adaptador da Apigee para Envoy, corrija o URL do proxy da API de serviço remoto no arquivo de configuração, inicie o adaptador da Apigee para Envoy e envie outra solicitação de API e verifique a correção.

    Exemplo de configuração:

    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
          
  2. Verifique se o proxy de API remote-service foi implantado no ambiente de borda relevante. Caso contrário, implante o proxy de API remote-service no ambiente de borda relevante e tente novamente.
  3. Verifique a conectividade de rede entre o adaptador da Apigee para Envoy e o endpoint do proxy da API remote-service. Se houver algum problema de conectividade de rede, entre em contato com sua equipe de rede e tente resolvê-lo.

Causa: o proxy Envoy não consegue se comunicar com o adaptador da Apigee para Envoy

Diagnóstico

Siga estas etapas para diagnosticar o problema:

  1. Verifique se você ativou os registros de depuração no Envoy. Caso contrário, pare o Envoy e inicie-o novamente, ativando os registros de depuração. Em seguida, envie outra solicitação de API.

    Implantações independentes:

    envoy -c envoy-config.yaml -l debug
    

    Implantações baseadas no 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
    
  2. Verifique os registros do adaptador da Apigee para Envoy e confira se há uma entrada de registro com a mensagem:
    connecting to APIGEE_ENVOY_ADAPTER_HOST:5000
    

    que é seguida por:

    upstream connect error or disconnect/reset before headers. reset reason: ACTUAL_REASON
    

    Exemplo de saída do registro de depuração:

    [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'

    O exemplo acima mostra que o Envoy não conseguiu se comunicar com o adaptador da Apigee para Envoy devido ao motivo connection failure.

  3. O connection failure pode ocorrer por vários motivos. Vamos analisar cada um dos cenários.

Cenário 1: o processo do adaptador não está em execução

Se o processo do adaptador da Apigee para Envoy não estiver em execução, talvez esse erro ocorra.

  1. Para verificar se o processo do adaptador da Apigee para Envoy está em execução, execute o comando a seguir. Se o processo do adaptador da Apigee para Envoy estiver em execução, o resultado do comando a seguir vai listá-lo.
    ps -ef | grep apigee-remote-service-envoy
    
  2. Se ele não estiver em execução, essa é a causa do problema.

Resolução

  1. Se o processo do adaptador da Apigee para Envoy não estiver em execução, inicie o adaptador da Apigee para Envoy.
  2. Faça outra solicitação de API e verifique se o problema foi corrigido.

Cenário 2: o processo do adaptador não está detectando na porta específica

Se o processo do adaptador da Apigee para Envoy não estiver detectando na porta específica, esse erro poderá ocorrer.

Se o processo do adaptador da Apigee para Envoy estiver em execução, verifique se há um soquete escutando na porta 5000: APIGEE_ENVOY_ADAPTER_HOST:5000. Execute o comando netstat para verificar isso:

sudo netstat -lnp | grep 5000

Exemplo de saída:

sudo netstat -lnp | grep 5000

tcp6       0      0 :::5000                 :::*                    LISTEN      1596530/./apigee-re

Se nenhum soquete estiver detectando na porta 5000, esse pode ser o motivo do problema.

Resolução

  1. Interrompa o adaptador da Apigee para Envoy e inicie-o novamente.
  2. Faça outra solicitação de API e verifique se o problema foi corrigido.

Cenário 3: conectividade de rede entre o Envoy e o adaptador da Apigee para Envoy

  1. Verifique a conectividade de rede entre o Envoy e o adaptador da Apigee para Envoy:
    ssh $ENVOY_HOST
    telnet $APIGEE_ENVOY_ADAPTER_HOST 5000

    Se o telnet puder fazer uma conexão TCP com o adaptador da Apigee para Envoy, uma saída semelhante a esta será exibida:

    telnet $APIGEE_ENVOY_ADAPTER_HOST 5000
    
    Trying ::1...
    Connected to localhost.
    Escape character is '^]'.
    
  2. Se você observar o erro Connection timed out com telnet, isso indica que há um problema de conectividade de rede entre o Envoy e o adaptador da Apigee para Envoy.

Resolução

Se você encontrar problemas de conectividade de rede entre o Envoy e o adaptador da Apigee para Envoy, entre em contato com sua equipe de rede e tente resolver o problema.

Se o problema persistir, acesse Precisamos coletar informações de diagnóstico.

É necessário coletar informações de diagnóstico

Se o problema persistir após as instruções acima, colete as informações de diagnóstico a seguir e entre em contato com o suporte do Apigee Edge:

  1. Produto Apigee usado:

    Exemplo:Apigee Edge Cloud, Apigee OPDK, Apigee híbrida, Apigee X

  2. Organização e ambiente da Apigee
  3. Leitura da definição do produto da API usando a API Edge:

    curl -i -u $USER:$PASSWORD $MANAGEMENT_SERVER_ENDPOINT/v1/organizations/$ORGANIZATION/apiproducts/$API_PRODUCT

    Referência: APIs Apigee Edge

  4. Inicie uma sessão de rastreamento no proxy de API remote-service usando a IU da Apigee Edge. Reproduza esse problema e compartilhe o arquivo XML da sessão de rastreamento.

    Referência: Como usar a ferramenta Trace | Apigee Edge

  5. Registros do adaptador da Apigee para Envoy (registros completos relacionados ao período especificado)

    Implantações independentes:

    # by default Apigee Envoy write logs to stdout and stderr, check your deployment configuration and collect logs accordingly
    

    Implantações baseadas no Kubernetes/Istio:

    kubectl -n=apigee get pods
    kubectl -n=apigee logs APIGEE_REMOTE_SERVICE_ENVOY_POD_NAME > apigee-remote-service-envoy.log
  6. Uma solicitação de API enviada ao proxy Envoy usando um comando curl (a saída completa do comando curl):
    curl -v ENVOY_PROXY_ENDPOINT
  7. Uma solicitação de API enviada para o serviço de destino usando um comando curl (a saída completa do comando curl):
    curl -v TARGET_SERVICE_ENDPOINT