コンテンツにスキップ

Customer Edge の診断

Customer Edge (CE) とは、本リポジトリが Azure 上にプロビジョニングする F5 Distributed Cloud ノードです(terraform/modules/ce-node。マーケットプレイスイメージ volterraedgeservices/volterra-node から構築されます)。

このノードでは、データプレーン (Argo)、コントロールプレーン (Vega)、Envoy プロキシ、Kubernetes スタック、そしてノードを登録しノード上のその他すべてを管理するエージェントである vpm が動作します。

CE に問題が発生した際の計測器となるのが Site CLI です。最初に判断すべきは、どのアクセス経路が 該当するかであり、これを誤ると、ノードが壊れているように見える形で時間を浪費することになります。

4つのアクセス経路。互換性はありません

Section titled “4つのアクセス経路。互換性はありません”

デバッグ API は、F5 Distributed Cloud のコントロールプレーンを経由してノードに到達します。 この区別が重要なのはまさにそのためです。API は、ノードが登録を完了し ONLINE を報告している場合に のみ応答できます。

登録に失敗したノード(不正な cloud-init、期限切れのトークン、register.ves.volterra.io への経路が ない、など)は、まさに診断が必要なケースであり、同時にまさに API では対応できないケースです。

Site Console は、特定のコマンドではなく F5 独自のトラブルシューティング UI を 使いたい場合に最初に試すべき経路です。要求するものが最も少なく(キー不要、踏み台ホスト不要、ノードへの パブリック IP 不要)、接続を許可する相手の判断は Azure RBAC に委ねられ、サイトが登録済みかどうかに かかわらず応答します。必要となるのは Azure Bastion であり、本デプロイメントでは enable_bastion で 制御され、デフォルトではデプロイされません。

SSH は、アプライアンスのコマンド面全体に到達できる唯一の経路です。デバッグ API が 公開するのは 34 個のコマンドですが、ノード自体はさらに多くを提供します。制約は 2 つあります。 sshd はノードの内部 (SLI) アドレスでのみ応答するため、VNet 内のホストが必要です。また、キーは 初回起動時に cloud-init によって書き込まれます。サイトオブジェクトの ssh_key フィールドは 無効であり、vpmadmin ユーザーをスキップして一切適用しないためです。したがって、稼働中の ノードで有効化するにはノードを再作成することになります。

つまり、サイトが ONLINE で 34 個のコマンドで十分ならデバッグ API を使います。UI が必要な場合、 あるいは登録は完了していないもののネットワーク経路は生きているノードの場合は Site Console を 使います。それ以外のコマンド面が必要で VNet に到達できるなら SSH を使います。ノードに機能する ネットワーク経路がまったくない場合は、シリアルコンソールが唯一の手段です。

以下のルールは、このページ以下のすべてのページのすべてのコマンドに当てはまります。

  • 確信がない限り読み取り専用にとどめること。 コマンド面は 2 つの権限階層に分かれており、 Exec 階層はノードを変更するか、状態マーカーを読み取ります。これらのページでは Exec コマンドを一切実行しませんし、キャプチャ用ハーネスも実行しません。
  • コマンド名から安全だと決めつけないこと。 ip-link-set は問い合わせのように見えますが、 インターフェイスをダウンさせます。systemctl-restart-crio は、稼働中のデータプレーンの下で コンテナランタイムを再起動します。
  • 疑問に答えられる最も範囲の狭いコマンドを選ぶこと。 healthdiagnosis は低コストで ノードの概要を示します。flow-l は生きているすべてのフローをダンプしますが、flow-l-match は 1 つの接続について同じ疑問に答えます。
  • CE は実トラフィックを処理しています。 これらは共有のデモ環境です。デバッグ対象のサイトから 誰かがプレゼンテーションを行っていると想定してください。

本テナントが稼働させているソフトウェアビルドにおいて、デバッグ API から到達できるすべてのコマンドを、 他所から転記するのではなく稼働中のノードから取得した出力とともに掲載しています。

コマンドリファレンス はそれらすべてをカテゴリ、権限階層、トランスポートとともに 一覧化します。ワークフロー は、問題が発生した際に実際に使用する順序へとそれらを つなぎ合わせます。

Site CLI のオンボックス専用の部分(configureconfigure-networkfactory-resetupgrade、 およびおよそ 60 個のさらなる ExecCLI コマンド)は対象外です。以下の各ページのように、稼働中の ノードから出力をキャプチャしていないためです。

ただし、もはや手が届かないわけではありません。scripts/sitecli_ssh_harvest.pySSH 経由でアプライアンス自身の補完メニューを操作し、各コマンドについて アプライアンスが示す説明を記録します。これにより、コマンド面を推測ではなく計測できます。 その実行はデフォルトで拒否されます。すべてを列挙し、許可リストに含まれるものだけを実行します。 検証されていないコマンド構文、そして検証されていないコマンドの影響こそが、本ドキュメントが 繰り返しを避けようとしている欠陥だからです。