ADC 0.8 & 0.9 & 0.10 の新機能は何ですか?

Zeping Bai

Zeping Bai

May 31, 2024

Products

はじめに

ADC (APISIX Declarative CLI) は、API7.ai によって導入された宣言型設定ツールで、ユーザーが GitOps を実現するための便利なツールセットを提供します。ユーザーはこれを簡単に CI/CD パイプラインに統合し、API のライフサイクル全体を管理し、API のアップグレードとリリースを完了することができます。[0.7 バージョンのリリース後、ADC は 0.8、0.9、0.10 の 3 つの新しいバージョンをリリースし、機能、パフォーマンス、ユーザーエクスペリエンスの面で最適化と更新が行われました。

ADC の新機能

リソース変更検出器の改善: Differ

これらの変更は 0.8 および 0.9 バージョンで導入されました。

リソース変更検出器 Differ の新しいバージョンである v3 を導入し、機能とコード品質に大幅な改善を加えました。

  1. 新しい Differ は、ローカルリソースに対してデフォルト値のマージメカニズムを導入し、サーバー側のデフォルト値が ADC のリソース変更チェックに干渉しないようにしました。

    クライアントが API7 または APISIX Admin API にリソース作成リクエストを送信すると、サーバーは送信されたリクエストに対してスキーマ検証を行います。このプロセス中、スキーマにデフォルト値がマークされているがクライアントから送信されていないフィールドは、自動的に送信されたリソースに追加されます。その結果、API からリソースを再度読み取ると、初期の送信内容とは異なるものになります。

    以前の ADC バージョンでは、これらのリソースを「変更済み」としてリストアップし、Admin API に更新 API リクエストを送信していました。この動作は ADC にいくつかの不確実性をもたらしましたが、Differ によってこの問題は解決されました。

  2. デフォルト値のマージメカニズムは API7 バックエンドに実装され、ユーザーがローカルの YAML 設定を変更した場合にのみリソースの差分が変更として認識されるようになりました。

  3. Differ の検出粒度を改善: ADC は現在、リソース本体とプラグインの次元で別々にリソース変更チェックを行い、チェック中の異常を減らすのに役立っています。

  4. コード品質を最適化し、冗長なコードを簡素化して可読性を向上させ、いくつかのバグを修正しました。

リソースフィルタ

リソースラベルとリソースタイプに基づく 2 つのリソースフィルタリングメカニズムを追加しました。これらは、フェッチ、差分チェック、および同期操作中に不要なリソースを除外するために使用できます。

リソースラベルフィルタ

この機能は 0.8 バージョンで導入されました。

このフィルタは、リソースの labels フィールドに基づいてフィルタリングを行います。ユーザーはコマンドラインで --label-selector key=value パラメータを使用してフィルタを有効にできます。複数のフィルタ条件を設定でき、これらのルールを同時に満たすリモートリソースのみが既存として認識され、ローカルリソースには自動的にこれらのラベルが追加されます。

これにより、小さな範囲内でリソースチェックと同期を実行し、CI/CD パイプラインで実行されるタスクを分割し、変更が必要ないリソースを誤って同期して破壊することを防ぎます。

リソースタイプフィルタ

この機能は 0.9 バージョンで導入されました。

2 つの新しいコマンドラインパラメータ --include-resource-type <type>--exclude-resource-type <type> を追加しました。これらは複数回設定できますが、includeexclude パラメータは相互に排他的です。

これらのパラメータを使用して、現在の操作から特定のリソースタイプをフィルタリングできます。例えば、include-resource-type を使用してホワイトリストを設定し、操作に含めるリソースタイプを選択できます。一方、exclude-resource-type は操作から除外するリソースタイプを決定します。

これにより、プラグインメタデータやプラグインのグローバルルールなど、頻繁に変更する必要のないリソースをより適切に処理できます。

コマンドラインの改善

これらの改善は 0.9 バージョンで導入されました。

TLS 証明書の設定

コマンドラインに一連の TLS 関連パラメータを追加しました。例えば:

  • --ca-cert-file でサーバーの CA 証明書ファイルを指定
  • --tls-skip-verify で TLS サーバー証明書の検証を無効化
  • --tls-client-cert-file--tls-client-key-file で mTLS クライアント証明書ファイルを指定

これらのパラメータは、ADC が安全な暗号化接続を確立し、中間者攻撃を防ぐのに役立ちます。

タイムアウト制御

API 呼び出しのタイムアウト時間を制御するために --timeout <duration> パラメータを追加しました。1m30s のような構文をサポートしています。Admin API 呼び出しが長時間かかる場合やハングした場合、タイムアウトメカニズムが有効になり、無限に待機することを防ぎます。

デバッグモード

この機能は 0.9 バージョンで導入されました。

ADC が内部でリソース操作を実行する際、大量の API を呼び出す必要があります。これらの API 呼び出しをチェックして、正しく送信されているか、サーバーの応答が期待通りかどうかを分析する必要がある場合があります。パケットキャプチャを使用してこれを実現できますが、操作が不便で、TLS が有効な場合には大きな困難があります。

そのため、ADC に組み込みのデバッグモードを追加しました。--verbose <integer> パラメータを使用して有効にできます。このパラメータを 2 に設定すると、ADC は各内部 API 呼び出しのリクエストとレスポンス部分を出力し、デバッグを支援します。

このパラメータはログを非表示にするためにも使用できます。このパラメータを 0 に設定すると、ADC はエラー以外のすべての一般的なログを非表示にします。

リモートリソース処理の強化

この機能は 0.9 バージョンで導入されました。

ADC はサービスやルートなどを設定する唯一の方法ではないため、ユーザーは API7 Enterprise ダッシュボードを使用して簡単な操作でこれを行うこともできます。これにより、ダッシュボードでの操作はランダムに生成されたリソース ID を使用し、ADC は YAML 設定内のリソース名を使用して固定のリソース ID を生成し、正確なリソース位置特定を行います。

つまり、ユーザーがダッシュボードでリソースを作成した場合、ADC はリソース ID でそれを特定できません。ADC はダッシュボードで作成されたリソースを変更または削除できませんが、これらのリソースは変更検出に表示されますが、正しく操作できません。

そのため、API7 バックエンド ADC の関連ロジックを最適化しました。リモートとローカルの両方に同じ名前のリソースが含まれているが、ID が一致しない場合、ADC はリモートリソースを正しく削除し、ローカル設定に基づいて新しいリソースを作成できます。この場合、ID は ADC によってリソース名に基づいて生成され、後続のリソース検索に使用できます。API7 ダッシュボードのユーザーは影響を受けず、ADC によって作成されたリソースはダッシュボードで引き続き表示されます。

OpenAPI コンバータでの ADC 拡張フィールドのサポート

この機能は 0.10 バージョンで導入されました。

OpenAPI から ADC を経由して API7 に至る一貫したパイプラインを構築するため、OpenAPI コンバータは私たちのニーズに基づいて必要なフィールドを ADC YAML 設定ファイルに注入する必要があります。

例えば、サービスのアップストリームの pass_host フィールドを変更する場合、以前はコンバータを使用して OpenAPI を ADC 設定ファイルに変換し、手動で pass_host フィールドを変更し、変更されたファイルを Git リポジトリに提出して CI/CD パイプラインが ADC 同期を実行する必要がありました。このプロセスは一貫性がなく、多くの手動介入が必要でした。

現在、導入された x-adc シリーズの拡張機能を使用して、ユーザーは OpenAPI ドキュメントの特定の場所に拡張フィールドを記述するだけで、ADC は生成された設定ファイルにこれらのフィールドを正しく書き込みます。これらの拡張機能により、ユーザーは OpenAPI 上で ADC 設定の任意の内容を直接変更できます。例えば、ラベルの追加、プラグインの追加、サービス/アップストリーム/ルートのデフォルト設定の上書きなどが可能です。

その結果、1 つの OpenAPI ファイルを維持するだけで、OpenAPI-ADC-API7 パイプラインをワンストップで実現でき、API ゲートウェイ設定の GitOps ワークフローを大幅に簡素化します。

結論

API7.ai が提供する宣言型設定ツール ADC は、企業が API ゲートウェイの GitOps 管理を実現するのに役立ちます。新しいバージョン 0.8、0.9、0.10 では、機能が最適化およびアップグレードされ、リソース変更監視やフィルタリングなどの機能が追加されました。これらの新機能は、API ライフサイクル管理全体に新たな勢いを注入します。

これらの新機能により、ADC は企業の API ゲートウェイ GitOps 管理のニーズにより適応し、API 管理の効率と柔軟性を向上させることができます。

Tags: