ランタイム プレーンとコントロール プレーンがネットワーク接続されていない

現在、ApigeeApigee ハイブリッドのドキュメントを表示しています。
このトピックに対応する Apigee Edge のドキュメントはありません。

現象

  • API プロダクト、デベロッパー、アプリは、Apigee UI に入力されません。
  • API プロキシのデプロイは完了していません。
  • API プロダクト、デベロッパー、アプリの読み取りと書き込みのために実行された Management API リクエストは失敗します。/li>

エラー メッセージ

このセクションでは、ネットワーク接続がないときに表示される可能性のあるエラー メッセージについて説明します。

ApigeeIssue

この問題が ApigeeIssue として報告された場合は、次のコマンドを実行します。

kubectl -n APIGEE_NAMESPACE get apigeeissues

ここで、APIGEE_NAMESPACE は Kubernetes リソースのグループの名前です。

次のエラーコードが表示されます。

NAME                               SEVERITY    AGE URL
control-plane-connectivity-failure Error       1hr https://cloud.google.com/apigee/docs/api-platform/troubleshoot/playbooks/no-network-connectivity

API プロダクト、デベロッパー、Apps Apigee UI のページ

API プロダクト、デベロッパー、Apps Apigee UI のページには、次のエラーが表示されます。

Error: no connections available from the Apigee connect agent(s):
refer to documentation to triage further.

apigee-synchronizer のログ

apigee-synchronizer ログで次のエラー メッセージを確認できます。

{"level":"SEVERE","thread":"Apigee-Timer-3","mdc":{"action":"SYNC","env":"dev",
  "org":"example-hybrid-dev"},"className":"com.apigee.httpclient.adaptor.RequestAdaptor",
  "method":"doSend","severity":"SEVERE","message":"request failed
  [CONTEXT ratelimit_period\u003d\"1 MINUTES [skipped: 1]\" ]",
  "formattedDate":"2023-02-01T06:27:48.700Z","logger":"SERVICES.HTTPCLIENTSERVICE",
  "exceptionStackTrace":"java.net.SocketTimeoutException: connect timed out
... com.apigee.httpclient.adaptor.RequestAdaptor.send(RequestAdaptor.java:251)
at com.apigee.hybrid.runtime.contract.sync.context.HttpContractDownloader.download(HttpContractDownloader.java:84)
at com.apigee.hybrid.runtime.contract.sync.context.ControlPlaneReplicationContext.getContract(ControlPlaneReplicationContext.java:66)

apigee-watcher のログ

apigee-watcher ログで次のエラー メッセージを確認できます。

{"level":"error","ts":1675232549.5093117,"caller":"watcher/watcher.go:60",
"msg":"error during watch","name":"mpstatus","error":"INTERNAL: error sending
  mp status to mgmt: INTERNAL: failed to send runtime status
  Post \"https://apigee.googleapis.com/v1/organizations/example-hybrid-dev/instances/apigee-hybrid-australia-southeast1:reportStatus\":
  dial tcp 172.217.24.42:443: i/o timeout","stacktrace":
  "edge-internal.git.corp.google.com/apigee-watcher.git/watcher.
  (*Watcher).Start.func1.1\n\t/go/src/edge-internal/apigee-watcher/watcher/watcher.go:60"}

考えられる原因

プラットフォーム 原因 説明
すべて インターネットで利用できるネットワーク ルートがありません インターネットで利用可能なネットワーク ルートがない場合、Apigee ランタイム プレーン コンポーネントは Apigee コントロール プレーン API と通信できません。
すべて Apigee API エンドポイントが許可リストに登録されていません ファイアウォールが存在する場合、Apigee API エンドポイントが許可リストに含まれていない可能性があります。
GKE 限定公開の Google アクセスが有効になっていない GKE でデプロイされている場合は、サブネットで限定公開の Google アクセスが有効になっていない可能性があります。
すべて 不明なネットワーク障害 クラスタ インターネットへの接続で不明な障害が発生した場合、この問題が発生する可能性があります。

原因: インターネットで利用できるネットワーク ルートがありません

診断

  1. 使用するプラットフォームに応じて、クラスタ ネットワークからインターネットへのネットワーク ルートが利用可能かどうかを確認します。たとえば、GKE のネットワーキングの詳細については、ネットワークの概要をご覧ください。
  2. インフラストラクチャ チームとネットワーキング チームに確認し、クラスタ ネットワークがインターネットに接続するためにフォワード プロキシ サーバーを使用しているかどうかを確認してください。

解決策

  1. ネットワーク管理者に確認し、可能であればインターネットへのネットワーク ルートを追加してください。
  2. クラスタ ネットワークとインターネット間の通信に使用される転送プロキシ サーバーがある場合は、overrides.yaml ファイルを使用して Apigee で転送プロキシ サーバーの設定を構成して、ランタイム プレーンに変更を適用します。
    apigeectl apply --settings virtualhosts -f overrides/overrides.yaml

原因: Apigee API エンドポイントが許可リストに登録されていません

診断

ネットワーク管理者に、Apigee がインストールされているプラットフォームのファイアウォールで Apigee API エンドポイントのリストが許可リストに含まれていることを確認してください。GKE の場合、Cloud Generation Firewall が該当します。

解決策

Apigee API エンドポイントのリストが許可リストに含まれていない場合は、ネットワーク管理者に連絡してその要件を満たすようにしてください。

原因: 限定公開の Google アクセスが有効になっていない

診断

  1. Apigee が、インターネットにアクセスできない限定公開 GKE クラスタにデプロイされている場合は、限定公開の Google アクセスを有効にして、Apigee ランタイム プレーン コンポーネントが内部で Google API にアクセスできるようにする必要があります。
  2. Google Cloud コンソールの [VPC ネットワーク] ページに移動します。

    [VPC ネットワーク] に移動

  3. ネットワークの名前をクリックします。
  4. [サブネット] タブの [限定公開の Google アクセス] 列で、関連するサブネットが有効になっていることを確認します。有効になっていない場合は、この障害の原因です。

解決策

  1. Google Cloud コンソールの [VPC ネットワーク] ページに移動します。

    [VPC ネットワーク] に移動

  2. ネットワークの名前をクリックします。
  3. サブネットの名前をクリックします。
  4. [ 編集] をクリックします。
  5. [限定公開の Google アクセス: オン] を選択します。
  6. [保存] をクリックします。有効化すると、この問題は解決します。

原因: 不明なネットワーク障害

診断

ネットワーク管理者に連絡し、クラスタ ネットワークに不明な障害がないか確認してください。

解決策

ネットワーク管理者と協力して、クラスタ ネットワークの問題を解決してください。ネットワークの問題を修正すると、この問題は解決します。

診断情報の収集が必要な場合

上記の手順でも問題が解決しない場合は、次の診断情報を収集して Google Cloud カスタマーケアに連絡してください。

  1. Google Cloud プロジェクト ID。
  2. Apigee ハイブリッド組織の名前
  3. すべての Kubernetes クラスタノードで実行される次のコマンドの出力。
    ping apigee.googleapis.com
    traceroute apigee.googleapis.com
    telnet apigee.googleapis.com 443
  4. overrides.yaml ファイル。機密情報をマスキングします。
  5. すべての Namespace の Kubernetes Pod のステータス:
    kubectl get pods -A > kubectl-pod-status`date +%Y.%m.%d_%H.%M.%S`.txt
  6. Kubernetes cluster-info ダンプ:

    Kubernetes cluster-info ダンプを生成します。

    kubectl cluster-info dump -A --output-directory=/tmp/kubectl-cluster-info-dump

    Kubernetes cluster-info ダンプを圧縮します。

    zip -r kubectl-cluster-info-dump`date +%Y.%m.%d_%H.%M.%S`.zip /tmp/kubectl-cluster-info-dump/*