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

Esta é a documentação do Apigee Edge.
Acesse Documentação da Apigee X.
informações

Sintoma

O Envoy Proxy falha com o erro HTTP 403 Forbidden quando chamado por meio de 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 condições a seguir 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 nuvem pública e privada 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 de API em API do Google Cloud. Usuários de nuvem pública e privada de borda
Nome do host ausente no produto da API O nome do host fornecido na solicitação da API do cliente está ausente no produto de API na Apigee destinos de serviços remotos. Usuários de nuvem pública e privada 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 nuvem pública e privada de borda
Chave de API inválida A chave de API transmitida como parte da solicitação é inválida. Usuários de nuvem pública e privada de borda
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 de serviço remoto. Usuários de nuvem pública e privada de borda
O proxy Envoy não consegue se comunicar com o adaptador da Apigee para Envoy O proxy Envoy não consegue se comunicar com o adaptador da Apigee para Envoy Usuários de nuvem pública e privada 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, interrompa o adaptador da Apigee para Envoy e o reinicie, ativando os registros de depuração usando o seguinte comando:

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

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

Esse erro ocorrerá se o produto de API específico usado pelo proxy Envoy não estiver ativado no ambiente específico em que as chamadas da 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 confirme 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 de API ENVOY-PRODUCT-1 não foi encontrado em Adaptador da Apigee para Envoy.

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

  3. Se você vir essa mensagem ao autorizar a solicitação de API, é provável que ela indique se o produto de API específico não está habilitado para um ambiente específico no qual você fazer as chamadas de API.
  4. Siga estas etapas para verificar isso:
    1. Faça login na IU do Edge.
    2. Na página Publicar > produtos de API, clique no produto de API específico usado 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 será a causa para esse problema.
  5. Se o ambiente específico já estiver ativado, acesse Causa: caminho de URI do serviço de destino ausente no produto de API.

Resolução

Se o ambiente específico não estiver ativado no produto da API, execute as etapas a seguir para resolver o problema:

  1. Faça login na IU do Edge.
  2. Na página Publicar > página de 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. Ative o ambiente específico em que você quer fazer solicitações de API selecionando na caixa de seleção do ambiente relevante.
  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 confirme se a mensagem a seguir é exibido 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 Essa é a causa desse problema nos registros de depuração do adaptador da Apigee para Envoy. Caso contrário, acesse Causa: nome do host ausente no produto de API.

Resolução

Se o URI de solicitação específica 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 IU do Edge.
  2. Na página Publicar > produtos de API, clique no produto de API específico usado 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 de API, adicione o URI da solicitação de API ao produto da API.
  5. Monitorar os registros do adaptador da Apigee para Envoy e aguardar até que o adaptador da Apigee para Envoy busca o produto de API atualizado. Em seguida, 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 porta e nome do host de destino não for adicionada ao Produto da API 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 confirme se a mensagem a seguir é exibido 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 encontrado 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, esse será o 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 porta e nome do host de destino não for adicionada ao produto da API, execute o etapas a seguir para resolver o problema:

  1. Faça login na IU do Edge.
  2. Na página Publicar > produtos de API, clique no produto de API específico usado 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 Remote service targets, adicione o nome do host de destino e porta e clique em Salvar.

    Se você não encontrar a seção Apigee Remote service targets na interface, adicionar um atributo personalizado ao produto da API com o nome apigee-remote-service-targets e adicione 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. Quando a tarefa acima for concluída, monitore os registros do adaptador da Apigee para Envoy e aguarde até que o O adaptador da Apigee para Envoy busca o produto de API atualizado. Depois, envie outra 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 verifique se você vê [missing authentication] mensagem no Authenticate error nesta seção.

    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 é 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 , isso será a causa do problema. Caso contrário, acesse Causa: chave de API inválida.

Resolução

Se o erro [missing authentication] for exibido no Adaptador da Apigee para registros 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 no a 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 a chave de API padrão o nome do cabeçalho 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 da chave de API padrão foi modificado para api-key: Nesse caso, você precisa passar 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, solicite que o cliente use o Nome do cabeçalho da chave de API, enviar outra solicitação de API e verificar se isso resolve o problema.

Causa: chave de API inválida

Esse erro 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 confirme se a mensagem é exibida [permission denied] na seção Authenticate error. Isso geralmente é exibido depois que a chave de API é buscada pelo adaptador, o que é indicado por a 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 indica que a chave de API transmitida como parte da solicitação é inválida e é a causa do problema. Caso contrário, acesse Causa: 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, siga as etapas a seguir. para resolver o problema:

  1. Verifique a chave de API enviada na solicitação de API em relação ao valor da chave de API 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 essa chave.
  3. Se a chave de API usada pelo cliente for válida e se você ainda estiver vendo um erro 403. Entre em contato com o suporte do Apigee Edge para investigar o problema.

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 servidor o proxy da API de serviço 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 confirme 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 API de serviço remoto porque o nome do host fornecido no proxy de API do servidor remoto O URL 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 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, faça o seguinte: etapas para resolver o problema:

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

    Caso contrário, interrompa o adaptador da Apigee para Envoy. Corrija o URL do proxy de API de serviço remoto no de configuração, inicie o adaptador da Apigee para Envoy, envie outra solicitação de API e verificar 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 Edge relevante. de nuvem. Caso contrário, implante o proxy de API remote-service no Edge relevante. e tente novamente.
  3. Verifique a conectividade de rede entre o adaptador da Apigee para Envoy e o remote-service endpoint de proxy de API. Se houver conectividade de rede problemas encontrados, entre em contato com a equipe de rede e tente resolver o problema.

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, interrompa o Envoy, inicie-o novamente ativar 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 confirme 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 Adaptador da Apigee para Envoy pelo motivo connection failure.

  3. O connection failure pode ocorrer por vários motivos. Vamos conhecer 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, esse erro poderá ocorrer.

  1. Para verificar se o processo do adaptador da Apigee para Envoy está sendo executado, execute o seguinte: kubectl. Se o processo do adaptador da Apigee para Envoy estiver em execução, o resultado a seguir deve listá-lo.
    ps -ef | grep apigee-remote-service-envoy
    
  2. Se ele não estiver sendo exibido, 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 detectando porta 5000: APIGEE_ENVOY_ADAPTER_HOST:5000. É possível executar netstat para verificar isso:

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 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 pudesse fazer uma conexão TCP com o adaptador da Apigee para Envoy será exibida uma saída semelhante a esta:

    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 há um problema de conectividade de rede entre o Envoy e o adaptador da Apigee para Envoy.

Resolução

Se houver 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 É necessário coletar informações de diagnóstico.

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

Se o problema persistir depois de seguir as instruções acima, faça o seguinte 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. 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 o Interface do Apigee Edge. Reproduza o problema e compartilhe o arquivo XML da sessão do Trace.

    Referência: Como usar a ferramenta Trace | Apigee Edge (em inglês)

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

    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 ao serviço de destino usando um comando curl (o comando saída do comando curl):
    curl -v TARGET_SERVICE_ENDPOINT