<ph type="x-smartling-placeholder"></ph>
現在、Apigee Edge のドキュメントが表示されています。
Apigee X のドキュメント。 詳細
症状
Envoy プロキシが HTTP 403 Forbidden
エラーで失敗する
Apigee Adapter for Envoy。
エラー メッセージ
次のエラー メッセージが表示されます。
HTTP/1.1 403 Forbidden content-length: 19 content-type: text/plain date: Tue, 03 Nov 2020 00:20:10 GMT server: istio-envoy
考えられる原因
次のいずれかの条件に該当する場合、Envoy プロキシは HTTP 403
エラーを発生させます。
発生:
原因 | 説明 | トラブルシューティングの実施対象 |
---|---|---|
API プロダクトが有効になっていない | 特定の環境で API プロダクトが有効になっていません。 | Edge Public Cloud ユーザーと Edge Private Cloud ユーザー |
API プロダクトにターゲット サービスの URI パスがない | ターゲット サービスの URI パスがないか、API で API プロダクトに追加されていません 説明します。 | Edge Public Cloud ユーザーと Edge Private Cloud ユーザー |
API プロダクトにホスト名がない | クライアント API リクエストで指定されたホスト名が Apigee の API プロダクトにない リモートサービスターゲットを指定します | Edge Public Cloud ユーザーと Edge Private Cloud ユーザー |
リクエスト ヘッダーに API キーがない | API キーが x-api-key HTTP ヘッダーで渡されていない。 |
Edge Public Cloud ユーザーと Edge Private Cloud ユーザー |
API キーが無効です | リクエストの一部として渡された API キーが無効です。 | Edge Public Cloud ユーザーと Edge Private Cloud ユーザー |
Apigee Adapter for Envoy は、 リモート サービスの API プロキシと通信する | Apigee Adapter for Envoy がリモート サービスの API プロキシと通信できません。 | Edge Public Cloud ユーザーと Edge Private Cloud ユーザー |
Envoy プロキシが通信できない (Apigee Adapter for Envoy を使用) | Envoy プロキシが Apigee Adapter for Envoy と通信できない | Edge Public Cloud ユーザーと Edge Private Cloud ユーザー |
始める前に
403 Forbidden
レスポンス メッセージが Envoy プロキシ。次に例を示します。curl -i -H "x-api-key: $API_KEY" http://httpbin:8080/echo HTTP/1.1 403 Forbidden content-length: 19 content-type: text/plain date: Tue, 12 Jan 2021 08:18:08 GMT server: envoy RBAC: access denied
デバッグログを有効にします。
Apigee Adapter for Envoy でデバッグログを有効にして、次の詳細情報を取得してください。 表示されます。実行されていない場合は、Apigee Adapter for Envoy を停止してから再起動し、デバッグログを有効にします。 次のコマンドを使用します。
apigee-remote-service-envoy -c config.yaml -l debug
原因: API プロダクトが有効になっていない
このエラーは、Envoy プロキシで使用される特定の API プロダクトが API 呼び出しが呼び出される特定の環境。
診断
次の手順で問題を診断します。
- 上記のステップ 2 の説明に従ってデバッグログを有効にします。
- Apigee Adapter for Envoy のログを調べ、次のメッセージが表示されていることを確認します。
セクション
Authorizing request
:product: API_PRODUCT_NAME not found
デバッグログの出力例:
2021-01-12T08:18:08.124Z DEBUG auth/auth.go:98 Authenticate: key: 7mQIG..., claims: map[string]interface {}(nil) 2021-01-12T08:18:08.124Z DEBUG auth/verify_api_key.go:106 fetchToken fetching: 7mQIG... 2021-01-12T08:18:08.589Z DEBUG auth/auth.go:125 using api key from request 2021-01-12T08:18:08.589Z DEBUG auth/auth.go:157 Authenticate success: &auth.Context{Context:(*server.Handle r)(0xc0001a0600), ClientID:"7mQIG...", AccessToken:"", Application:"ENVOY-APP-1", APIProducts:[]string{"ENVOY-PRODUCT-1"}, Expires:time.Time{wall:0x0, ext:63746037188, loc:(*time.Location)(0x14a3be0)}, DeveloperEmail:"[---masked---]", Scopes:[] string{""}, APIKey:"7mQIG..."} 2021-01-12T08:18:08.589Z DEBUG product/manager.go:89 Authorizing request: products: [ENVOY-PRODUCT-1] scopes: [] operation: GET /echo target: httpbin:8080 - product: ENVOY-PRODUCT-1 not found
上記の例は、API プロダクト
ENVOY-PRODUCT-1
が Apigee Adapter for Envoy。Apigee Adapter for Envoy のロギングの詳細については、以下をご覧ください。 Logging。
- API リクエストの承認中にこのメッセージが表示された場合、次の可能性が考えられます。 特定の API プロダクトが、使用している特定の環境で有効になっていないこと API 呼び出しを行います
- 次の手順でこれを確認します。
<ph type="x-smartling-placeholder">
- </ph>
- Edge UI にログインします。
- [公開 >API プロダクト ページで、対象の API プロダクトを Apigee Adapter for Envoy の構成に使用します。
- API リクエストを行っている特定の環境が API プロダクトで有効にする必要があります。
- 特定の環境が API プロダクトで有効になっていない場合は、それが原因です。 判断してください
- 特定の環境がすでに有効になっている場合は、[ <ph type="x-smartling-placeholder"></ph> 原因: API プロダクトにターゲット サービスの URI パスがありません。
解決策
特定の環境が API プロダクトで有効になっていない場合は、次の手順で操作します。 問題を解決します。
- Edge UI にログインします。
- [公開 >API プロダクト ページで、使用した特定の API プロダクトをクリックします。 Apigee Adapter for Envoy の構成方法を説明します。
- [API プロダクト >[プロダクト名] ページで [編集] をクリックします。
- API リクエストを行う特定の環境を有効にするには、 該当する環境のチェックボックスを選択します
- [保存] をクリックします。
原因: API プロダクトにターゲット サービスの URI パスがない
このエラーは、使用する特定の API プロダクトでターゲットの URI パスが指定されていない場合に発生します。 Envoy プロキシによって管理されます。
診断
次の手順で問題を診断します。
- 上記のステップ 2 の説明に従ってデバッグログを有効にします。
-
Apigee Adapter for Envoy のログで、次のメッセージを確認します。 特定のターゲットに関連付けられた特定の API プロダクトに対して表示されます。
Authorizing request
:no path: REQUEST_URI_PATH
デバッグログの出力例:
2021-01-12T08:09:02.604Z DEBUG auth/auth.go:98 Authenticate: key: 7mQIG..., claims: map[string]interface {}(nil) 2021-01-12T08:09:02.605Z DEBUG auth/auth.go:125 using api key from request 2021-01-12T08:09:02.605Z DEBUG auth/auth.go:157 Authenticate success: &auth.Context{Context:(*server.Handle r)(0xc0001a4180), ClientID:"7mQIG...", AccessToken:"", Application:"ENVOY-APP-1", APIProducts:[]string{"ENVOY-PRODUCT-1"}, Expires:time.Time{wall:0x0, ext:63746036507, loc:(*time.Location)(0x14a3be0)}, DeveloperEmail:"[---masked---]", Scopes:[] string{""}, APIKey:"7mQIG..."} 2021-01-12T08:09:02.605Z DEBUG product/manager.go:89 Authorizing request: products: [ENVOY-PRODUCT-1] scopes: [] operation: GET /echo1 target: httpbin:8080 - product: ENVOY-PRODUCT-1 no path: /echo1 2021-01-12T08:09:02.605Z DEBUG server/authorization.go:228 sending ok (actual: PERMISSION_DENIED)
サンプル出力に次のメッセージが表示されます。
no path: /echo1
これは、パス
/echo1
が API プロダクトで見つからなかったことを示します。ENVOY-PRODUCT-1
。 - [
no path: REQUEST_URI_PATH
] というメッセージが表示された場合、 Apigee Adapter for Envoy デバッグログを使用している場合、これがこの問題の原因です。そうでない場合は、次に進みます。 原因: API プロダクトにホスト名がありません。
解決策
特定のリクエスト URI が、特定のターゲットの API プロダクトに追加されていない場合、 次の手順で問題を解決します。
- Edge UI にログインします。
- [公開 >API プロダクト ページで、対象の API プロダクトを Apigee Adapter for Envoy の構成に使用します。
- [API プロダクト >[プロダクト名] ページで [編集] をクリックします。
- [API resources] ペインで、API プロダクトに API リクエスト URI を追加します。
- Apigee Adapter for Envoy のログをモニタリングし、Apigee Adapter for Envoy が作成されるまで待つ 更新された API プロダクトを取得します。その後、別の API リクエストを送信して修正を検証します。
原因: API プロダクトにホスト名がない
このエラーは、ターゲット ホスト名とポートの組み合わせが特定の Envoy プロキシで使用される API プロダクト。
診断
次の手順で問題を診断します。
- 上記のステップ 2 の説明に従ってデバッグログを有効にします。
Apigee Adapter for Envoy のログで、次のメッセージを確認します。 特定のターゲットに関連付けられた特定の API プロダクトに対して表示されます。
Authorizing request
:no targets: HOSTNAME:PORT
デバッグログの出力例:
2021-01-12T08:12:06.019Z DEBUG auth/auth.go:98 Authenticate: key: 7mQIG..., claims: map[string]interface {}(nil) 2021-01-12T08:12:06.019Z DEBUG auth/auth.go:125 using api key from request 2021-01-12T08:12:06.019Z DEBUG auth/auth.go:157 Authenticate success: &auth.Context{Context:(*server.Handle r)(0xc0001a4180), ClientID:"7mQIG...", AccessToken:"", Application:"ENVOY-APP-1", APIProducts:[]string{"ENVOY-PRODUCT-1"}, Expires:time.Time{wall:0x0, ext:63746036507, loc:(*time.Location)(0x14a3be0)}, DeveloperEmail:"[---masked---]", Scopes:[] string{""}, APIKey:"7mQIG..."} 2021-01-12T08:12:06.019Z DEBUG product/manager.go:89 Authorizing request: products: [ENVOY-PRODUCT-1] scopes: [] operation: GET /echo target: httpbin1:8080 - product: ENVOY-PRODUCT-1 no targets: httpbin1:8080 2021-01-12T08:12:06.020Z DEBUG server/authorization.go:228 sending ok (actual: PERMISSION_DENIED)
上記の例は、ホスト名とポートの組み合わせ
httpbin1:8080
を示しています。 API プロダクトENVOY-PRODUCT-1
で見つかりませんでした。- Apigee Adapter for Envoy のログに、リクエストの承認中に
no targets: HOSTNAME:PORT
というメッセージを含むエントリが含まれている場合、これは 問題の原因を特定します。そうでない場合は、次に進みます。 原因: リクエスト ヘッダーに API キーがありません。
解決策
ターゲットのホスト名とポートの組み合わせが API プロダクトに追加されない場合は、 次の手順で問題を解決します。
- Edge UI にログインします。
- [公開 >API プロダクト ページで、対象の API プロダクトを Apigee Adapter for Envoy の構成に使用します。
- [API プロダクト >[プロダクト名] ページで [編集] をクリックします。
[Apigee リモート サービス ターゲット] ペインで、ターゲット ホスト名を追加します。 [保存] をクリックします。
UI に [Apigee リモート サービス ターゲット] セクションが表示されない場合は、 API プロダクトにカスタム属性を 「
apigee-remote-service-targets
」という名前を付け、 Edge API を使用する場合の HOSTNAME:PORT の値。例: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": [] }
<ph type="x-smartling-placeholder">- 上記のタスクが完了したら、Apigee Adapter for Envoy ログをモニタリングして、 Apigee Adapter for Envoy が、更新された API プロダクトを取得します。その後、別の API を送信します。 修正の検証をリクエストします。
原因: リクエスト ヘッダーに API キーがない
このエラーは、リクエスト ヘッダーの一部として API キーが渡されていない場合に発生します。
診断
次の手順で問題を診断します。
- 上記のステップ 2 の説明に従ってデバッグログを有効にします。
- Apigee Adapter for Envoy のログを調べて、
Authenticate error
に[missing authentication]
件のメッセージがあります 。デバッグログの出力例:
2021-01-12T08:20:31.461Z DEBUG auth/auth.go:98 Authenticate: key: , claims: map[string]interface {}(nil) 2021-01-12T08:20:31.461Z DEBUG auth/auth.go:159 Authenticate error: &auth.Context{Context:(*server.Handler) (0xc0001a0600), ClientID:"", AccessToken:"", Application:"", APIProducts:[]string(nil), Expires:time.Time{wall:0x0, ext:0, loc:(*time.Location)(nil)}, DeveloperEmail:"", Scopes:[]string(nil), APIKey:""} [missing authentication] 2021-01-12T08:20:31.461Z DEBUG server/authorization.go:205 sending denied: UNAUTHENTICATED 2021-01-12T08:20:32.448Z DEBUG server/header_context.go:68 No context header x-apigee-api, using target header : :authority
上記のサンプル出力には、メッセージ
[missing authentication]
が含まれます。 このメッセージは、API キーが 使用します。 - Apigee Adapter for Envoy のログの
Authenticate error
セクションに[missing authentication]
というメッセージを含むログエントリが含まれている場合、これは 問題の原因を特定します。そうでない場合は、次に進みます。 原因: API キーが無効です。
解決策
エラー [missing authentication]
が
Apigee Adapter for Envoy のログの場合は、次の手順で問題を解決します。
- クライアントが HTTP ヘッダー
x-api-key
を使用して API キーを送信しているかどうかを確認します。 作成されます。存在しない場合は、クライアントに HTTP ヘッダーで API キーを送信するようリクエストします。x-api-key
。 - Apigee Adapter for Envoy 構成ファイルで、デフォルトの API キーが
ヘッダー名
x-api-key
が変更されました。次に例を示します。apiVersion: v1 kind: ConfigMap metadata: name: apigee-remote-service-envoy namespace: apigee data: config.yaml: | global: tls: ... tenant: ... auth: target_header: api-key
上記の例では、デフォルトの API キーのヘッダー名が次のように変更されています。
api-key
。この場合、ヘッダーの一部として API キーを渡す必要があります。api-key
。 - デフォルトの API キーのヘッダー名が変更されている場合は、更新された API キーのヘッダー名を付け、別の API リクエストを送信して問題が解決するかどうかを確認します。
原因: API キーが無効
このエラーは、リクエスト ヘッダーの一部として無効な API キーが渡された場合に発生します。
診断
次の手順で問題を診断します。
- 上記のステップ 2 の説明に従ってデバッグログを有効にします。
- Apigee Adapter for Envoy のログを調べ、次のメッセージが表示されていることを確認します。
[permission denied]
[Authenticate error
] セクションに表示されます。 これは通常、アダプタが API キーを取得した後に表示されます。これは、 メッセージfetchToken fetching: API_KEY
。デバッグログの出力例:
2021-01-12T05:01:07.198Z DEBUG auth/auth.go:98 Authenticate: key: 123, claims: map[string]interface {}(nil) 2021-01-12T05:01:07.198Z DEBUG auth/verify_api_key.go:106 fetchToken fetching: API_KEY 2021-01-12T05:01:09.102Z DEBUG server/header_context.go:68 No context header x-apigee-api, using target header: :authority 2021-01-12T05:01:09.831Z DEBUG auth/auth.go:159 Authenticate error: &auth.Context{Context:(*server.Handler)(0xc0001640c0), ClientID:"", AccessToken:"", Application:"", APIProducts:[]string(nil), Expires:time.Time{wall:0x0, ext:0, loc:(*time.Location)(nil)}, DeveloperEmail:"", Scopes:[]string(nil), APIKey:""} [permission denied] 2021-01-12T05:01:09.832Z DEBUG server/authorization.go:228 sending ok (actual: PERMISSION_DENIED)
この例では、API リクエストで送信された API キーが無効でした。
- Apigee Adapter for Envoy のログの
Authenticate error
セクションに[permission denied]
というログエントリが含まれている場合は、 リクエストの一部として渡された API キーが無効であり、それが問題の原因です。 そうでない場合は、次に進みます。 原因: Apigee Adapter for Envoy リモート サービス API プロキシと通信できない。
解決策
Apigee Adapter for Envoy ログの Authenticate
error
セクションに [permission denied]
というメッセージが表示される場合は、次の操作を行います。
問題を解決するには:
- API リクエストで送信された API キーを、 API プロダクトに接続されているアプリケーション。
- クライアントによって使用される API キーが有効でない場合は、クライアントに有効な API キーを送信するようリクエストします。
- クライアントで使用されている API キーが有効で、HTTP が表示される場合
403
エラーが発生した場合は、Apigee Edge サポートに連絡して詳しく調査してください。
原因: Apigee Adapter for Envoy がリモート サービスの API プロキシと通信できない
このエラーは、Apigee Adapter for Envoy がリモート ネットワークと通信できない場合に発生します。 サービス API プロキシ(構成されたリモート サービス ホストが無効な場合)。
診断
次の手順で問題を診断します。
- 上記のステップ 2 の説明に従ってデバッグログを有効にします。
-
Apigee Adapter for Envoy のログで、次のメッセージが表示されていることを確認します。
Error retrieving products: REQUEST_URI: no such host
デバッグログの出力例:
2021-01-12T08:29:06.499Z DEBUG product/manager.go:188 retrieving products from: https://foo/remote-service/products 2021-01-12T08:29:06.505Z ERROR product/manager.go:164 Error retrieving products: GET "https://foo/remote-service/pro ducts": dial tcp: lookup foo on 169.254.169.254:53: no such host github.com/apigee/apigee-remote-service-golib/product.(*manager).start.func1 /go/pkg/mod/github.com/apigee/apigee-remote-service-golib@v1.4.0/product/manager.go:164 github.com/apigee/apigee-remote-service-golib/util.(*Looper).Run /go/pkg/mod/github.com/apigee/apigee-remote-service-golib@v1.4.0/util/looper.go:87 github.com/apigee/apigee-remote-service-golib/util.(*Looper).Start.func1 /go/pkg/mod/github.com/apigee/apigee-remote-service-golib@v1.4.0/util/looper.go:59
この例では、Apigee Adapter for Envoy が VPC ネットワークと通信できず、 リモート サーバーの API プロキシに提供されているホスト名があるため、リモート サービスの API プロキシ エラー
no such host
に示されているように、URL は有効ではありません。 - Apigee Adapter for Envoy のログに
no such host
というメッセージを含むログエントリが含まれている場合は、これが問題の原因です。そうでない場合は、次に進みます。 <ph type="x-smartling-placeholder"></ph> 原因: Envoy プロキシが Apigee Adapter for Envoy と通信できない。
解決策
上記のエラーが Apigee Adapter for Envoy のログに表示された場合は、次の操作を行います。 手順は次のとおりです。
Apigee Adapter for Envoy 構成ファイルを調べて、 リモート サービスの API プロキシの URL が有効です。
実行されていない場合は、Apigee Adapter for Envoy を停止して、リモート サービスの API プロキシ URL を修正します。 Apigee Adapter for Envoy を起動して別の API リクエストを送信し、 修正を確認します。
構成例:
apiVersion: v1 kind: ConfigMap metadata: name: apigee-remote-service-envoy namespace: apigee data: config.yaml: | tenant: internal_api: https://istioservices.apigee.net/edgemicro remote_service_api: https://ORG-ENV.apigee.net/remote-service org_name: ORG env_name: ENV key: KEY secret: SECRET
- 関連する Edge に
remote-service
API プロキシがデプロイされていることを確認する できます。存在しない場合は、関連する Edge にremote-service
API プロキシをデプロイします。 もう一度お試しください。 - Apigee Adapter for Envoy と VM 間のネットワーク接続を確認する
remote-service
API プロキシ エンドポイント。ネットワーク接続がある場合 ネットワーキング チームに連絡して問題の解決を試みてください。
原因: Envoy プロキシが Apigee Adapter for Envoy と通信できない
診断
次の手順で問題を診断します。
Envoy でデバッグログが有効になっていることを確認します。実行されていない場合は、Envoy を停止して再起動します。 デバッグログの有効化その後、別の API リクエストを送信します。
スタンドアロン デプロイ:
envoy -c envoy-config.yaml -l debug
Kubernetes/Istio ベースのデプロイ:
kubectl -n=istio-system get pods kubectl -n=istio-system exec -it INGRESS_GATEWAY_NAME bash -- curl -X POST localhost:15000/logging?connection=debug
- Apigee Adapter for Envoy のログで、次のメッセージを含むログエントリがあることを確認します。
connecting to APIGEE_ENVOY_ADAPTER_HOST:5000
その後に以下が続きます。
upstream connect error or disconnect/reset before headers. reset reason: ACTUAL_REASON
デバッグログの出力例:
[2021-03-23 05:44:41.867][1303661][debug][connection] [external/envoy/source/common/network/connection_impl.cc:769] [C4] connecting to 127.0.0.1:5000 [2021-03-23 05:44:41.867][1303661][debug][connection] [external/envoy/source/common/network/connection_impl.cc:785] [C4] connection in progress [2021-03-23 05:44:41.868][1303661][debug][http2] [external/envoy/source/common/http/http2/codec_impl.cc:1173] [C4] updating connection-level initial window size to 268435456 [2021-03-23 05:44:41.869][1303661][debug][connection] [external/envoy/source/common/network/connection_impl.cc:634] [C4] delayed connection error: 111 [2021-03-23 05:44:41.869][1303661][debug][connection] [external/envoy/source/common/network/connection_impl.cc:203] [C4] closing socket: 0 [2021-03-23 05:44:41.869][1303661][debug][client] [external/envoy/source/common/http/codec_client.cc:96] [C4] disconnect. resetting 0 pending requests [2021-03-23 05:44:41.869][1303661][debug][pool] [external/envoy/source/common/conn_pool/conn_pool_base.cc:314] [C4] client disconnected, failure reason: [2021-03-23 05:44:41.869][1303661][debug][router] [external/envoy/source/common/router/router.cc:1031] [C0][S6149963213555558594] upstream reset: reset reason: connection failure, transport failure reason: [2021-03-23 05:44:41.869][1303661][debug][http] [external/envoy/source/common/http/async_client_impl.cc:100] async http request response headers (end_stream=true): ':status', '200' 'content-type', 'application/grpc' 'grpc-status', '14' 'grpc-message', 'upstream connect error or disconnect/reset before headers. reset reason: connection failure'
上記の例は、Envoy が外部 IP アドレスから Apigee Adapter for Envoy。理由
connection failure
。 connection failure
には複数の理由が考えられます。 各シナリオを見ていきましょう。
シナリオ #1: アダプタ プロセスが実行されていない
Apigee Adapter for Envoy プロセスが実行されていない場合、このエラーが発生します。
- 次のコマンドを実行して、Apigee Adapter for Envoy プロセスが実行されていることを確認します。
使用できます。Apigee Adapter for Envoy プロセスが実行されている場合、次の結果になります。
コマンドで一覧表示されます。
ps -ef | grep apigee-remote-service-envoy
- 実行されていない場合は、それが問題の原因です。
解決策
- Apigee Adapter for Envoy プロセスが実行されていない場合は、 Apigee Adapter for Envoy。
- 別の API リクエストを行い、問題が解決したかどうかを確認します。
シナリオ #2: アダプター プロセスが特定のポートでリッスンしない
Apigee Adapter for Envoy プロセスが特定のポートをリッスンしていない場合は、 このエラーが発生する場合があります。
Apigee Adapter for Envoy プロセスが実行されている場合は、リッスンしているソケットがあることを確認する
ポート 5000: APIGEE_ENVOY_ADAPTER_HOST:5000
。こちらの
netstat
コマンドを使用して、これを確認します。
sudo netstat -lnp | grep 5000
出力例:
sudo netstat -lnp | grep 5000 tcp6 0 0 :::5000 :::* LISTEN 1596530/./apigee-re
ポート 5000 でリッスンするソケットがない場合、それがこの問題の原因である可能性があります。
解決策
- Apigee Adapter for Envoy を停止して再起動します。
- 別の API リクエストを行い、問題が解決したかどうかを確認します。
シナリオ #3: Envoy と Apigee Adapter for Envoy 間のネットワーク接続
- Envoy と Apigee Adapter for Envoy 間のネットワーク接続を確認します。
ssh $ENVOY_HOST telnet $APIGEE_ENVOY_ADAPTER_HOST 5000
telnet が Apigee Adapter for Envoy に TCP 接続を確立できるかどうか 次のような出力が表示されます。
telnet $APIGEE_ENVOY_ADAPTER_HOST 5000 Trying ::1... Connected to localhost. Escape character is '^]'.
- telnet で
Connection timed out
というエラーが表示された場合は、次のことを示しています。 Envoy と Apigee Adapter for Envoy の間にネットワーク接続の問題があります。
解決策
Envoy と Apigee Adapter for Envoy の間にネットワーク接続の問題が発生した場合は、 ネットワーキング チームと連携し、問題の解決に取り組みます。
問題が解決しない場合は、 診断情報の収集が必要な場合。
診断情報の収集が必要な場合
上記の手順でも問題が解決しない場合は、次の診断情報を収集してください。 Apigee Edge サポートにお問い合わせください。
-
使用する Apigee プロダクト:
例: Apigee Edge Cloud、Apigee OPDK、Apigee ハイブリッド、Apigee X
- Apigee の組織と環境
Edge API を使用した API プロダクト定義の読み取り:
curl -i -u $USER:$PASSWORD $MANAGEMENT_SERVER_ENDPOINT/v1/organizations/$ORGANIZATION/apiproducts/$API_PRODUCT
リファレンス: Apigee Edge API
次のコマンドを使用して、
remote-service
API プロキシでトレース セッションを開始します。 Apigee Edge UI。この問題を再現し、トレース セッション XML ファイルを共有してください。Apigee Adapter for Envoy のログ(特定の期間に関連する完全なログ)
スタンドアロン デプロイ:
# by default Apigee Envoy write logs to stdout and stderr, check your deployment configuration and collect logs accordingly
Kubernetes/Istio ベースのデプロイ:
kubectl -n=apigee get pods kubectl -n=apigee logs APIGEE_REMOTE_SERVICE_ENVOY_POD_NAME > apigee-remote-service-envoy.log
curl
コマンドを使用して Envoy プロキシに送信される API リクエスト (curl
コマンドの完全な出力):curl -v ENVOY_PROXY_ENDPOINT
curl
コマンドを使用してターゲット サービスに送信される API リクエスト(完全なcurl
コマンドの出力)をご覧ください。curl -v TARGET_SERVICE_ENDPOINT