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

Você está lendo a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
info

Sintoma

O proxy do Envoy 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 de API não está ativado O produto de API não está ativado para o ambiente específico. Usuários da nuvem pública e privada do Edge
Caminho do URI do serviço de destino ausente no produto de API O caminho do URI do serviço de destino está faltando ou não foi adicionado ao produto da API em recursos da API. Usuários da nuvem pública e privada do Edge
Nome do host ausente no produto de API O nome do host fornecido na solicitação da API do cliente está faltando no produto de API em destinos de serviço remoto da Apigee. Usuários da nuvem pública e privada do Edge
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 da nuvem pública e privada do Edge
Chave de API inválida A chave de API transmitida como parte da solicitação é inválida. Usuários da nuvem pública e privada do Edge
O adaptador da Apigee para Envoy não consegue se comunicar com o proxy de API de serviço remoto O adaptador da Apigee para Envoy não consegue se comunicar com o proxy de API remote-service. Usuários da nuvem pública e privada do Edge
O proxy do Envoy não consegue se comunicar com o adaptador da Apigee para Envoy O proxy do Envoy não consegue se comunicar com o adaptador da Apigee para Envoy Usuários da nuvem pública e privada do Edge

Antes de começar

  1. Verifique se você está recebendo a mensagem de resposta 403 Forbidden do proxy Envoy. 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 e reinicie o adaptador da Apigee para Envoy, ativando os registros de depuração com o seguinte comando:

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

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

Esse erro vai ocorrer se o produto de API específico usado pelo proxy Envoy 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 seguinte mensagem aparece 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 de 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 essa mensagem aparecer ao autorizar a solicitação de API, provavelmente indica que o produto de API específico não está ativado para um ambiente específico em que você está fazendo as chamadas de API.
  4. Siga estas etapas para verificar isso:
    1. Faça login na interface do Edge.
    2. Na página Publicar > Produtos da API, clique no produto da 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 de API, essa será 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 de 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 da API, clique no produto da API específico que você usou para configurar o adaptador da Apigee para Envoy.
  3. Na página Produtos de API > Nome do produto, clique em Editar.
  4. Marque a caixa de seleção do ambiente relevante para ativar o ambiente específico 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 da API

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

Diagnóstico

Siga estas etapas para diagnosticar o problema:

  1. Ative os registros de depuração conforme explicado na etapa 2 acima.
  2. Confira os registros do adaptador da Apigee para Envoy e verifique se a seguinte mensagem é mostrada 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)

    A saída de exemplo mostra a mensagem:

    no path: /echo1

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

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

Resolução

Se o URI de solicitação específico não for adicionado ao produto de 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 da API, clique no produto da API específico que você usou para configurar o adaptador da Apigee para Envoy.
  3. Na página Produtos de API > Nome do produto, clique em Editar.
  4. No painel Recursos da API, adicione o URI de solicitação da API ao produto de API.
  5. Monitore os registros do adaptador da Apigee para Envoy e aguarde até que ele 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 da API

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

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 é mostrada 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 do 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 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 do host 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 da API, clique no produto da API específico que você usou para configurar o adaptador da Apigee para Envoy.
  3. Na página Produtos de API > Nome do produto, clique em Editar.
  4. No painel Apigee remote service targets, adicione o nome do host e a porta de destino e clique em Salvar.

    Se a seção Apigee remote service targets não aparecer na interface, adicione um atributo personalizado ao produto de API com o nome apigee-remote-service-targets e o valor 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 ele busque o produto de API atualizado. Depois, envie outra solicitação de API para verificar a correção.

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

Esse erro vai ocorrer se a chave de API não for transmitida como parte dos cabeçalhos de 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

    A saída de exemplo mostrada 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 é 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, siga estas etapas 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, peça ao cliente para enviar 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 confira se o nome do cabeçalho padrão da chave de API x-api-key foi alterado. Por 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, você precisa transmitir a chave de API como parte do cabeçalho api-key.

  3. Se o nome do cabeçalho da chave de API padrão tiver sido alterado, peça ao cliente para usar o nome atualizado do cabeçalho da chave de API e envie outra solicitação de API para verificar se isso resolve o problema.

Causa: chave de API inválida

Esse erro vai ocorrer se uma chave de API inválida for transmitida 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 o [permission denied] na seção Authenticate error , isso indica 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 dos registros do adaptador da Apigee para Envoy, siga estas etapas para resolver o problema:

  1. Verifique se a chave de API enviada na solicitação de API corresponde ao valor da chave de API encontrado no aplicativo conectado ao produto de API.
  2. Se a chave de API usada pelo cliente não for válida, peça para ele enviar a chave de API válida.
  3. Se a chave de API usada pelo cliente for válida e você ainda estiver recebendo um erro HTTP 403, entre em contato com o suporte da Apigee Edge para investigar o problema.

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

Esse erro vai ocorrer se o adaptador da Apigee para Envoy não conseguir se comunicar com o proxy de API do serviço remoto se o host do 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 aparece:

    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 API remote-service porque o nome do host fornecido no URL do proxy de 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 contiverem uma entrada de registro com a mensagem no such host, essa será a causa do problema. Caso contrário, acesse Causa: o proxy do 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, siga estas etapas para resolver o problema:

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

    Caso contrário, pare o adaptador da Apigee para Envoy, corrija o URL do proxy de API remote-service no arquivo de configuração, inicie o adaptador da Apigee para Envoy, 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 está implantado no ambiente relevante do Edge. Caso contrário, implante o proxy de API remote-service no ambiente relevante do Edge e tente de novo.
  3. Verifique a conectividade de rede entre o adaptador da Apigee para Envoy e o endpoint do proxy de API remote-service. Se houver problemas de conectividade de rede, entre em contato com a equipe de rede e tente resolver o problema.

Causa: o proxy do 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. Se não, pare e inicie o Envoy novamente, ativando os registros de depuração. Em seguida, envie outra solicitação de API.

    Implantações autônomas:

    envoy -c envoy-config.yaml -l debug

    Implantações baseadas em 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 é seguido 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

Esse erro pode ocorrer se o processo do adaptador da Apigee para Envoy não estiver em execução.

  1. Execute o comando a seguir para verificar se o processo do adaptador da Apigee para Envoy está em execução. 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 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.
  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

Esse erro pode ocorrer se o processo do adaptador da Apigee para Envoy não estiver escutando na porta específica.

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

sudo netstat -lnp | grep 5000

Exemplo de resposta:

sudo netstat -lnp | grep 5000

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

Se não houver um soquete detectando a porta 5000, esse poderá ser o motivo do problema.

Resolução

  1. Pare e reinicie o adaptador da Apigee para Envoy.
  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 conseguir 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 o 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 Precisa de informações de diagnóstico.

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

Se o problema persistir depois de seguir as instruções acima, reúna as seguintes informações de diagnóstico e entre em contato com o suporte do Apigee Edge:

  1. Produto da Apigee usado:

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

  2. Organização e ambiente da Apigee
  3. Definição de produto da API lida usando a API do Edge:

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

    Referência:APIs do Apigee Edge

  4. Inicie uma sessão de rastreamento no proxy de API remote-service usando a interface do Apigee Edge. Reproduza o 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 autônomas:

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

    Implantações baseadas em 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 do Envoy usando um comando curl (a saída completa do comando curl):
    curl -v ENVOY_PROXY_ENDPOINT
  7. Uma solicitação de API enviada ao serviço de destino usando um comando curl (a saída completa do comando curl):
    curl -v TARGET_SERVICE_ENDPOINT