ADC 0.8 & 0.9 & 0.10 の新機能は何ですか?
May 31, 2024
はじめに
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 を導入し、機能とコード品質に大幅な改善を加えました。
-
新しい Differ は、ローカルリソースに対してデフォルト値のマージメカニズムを導入し、サーバー側のデフォルト値が ADC のリソース変更チェックに干渉しないようにしました。
クライアントが API7 または APISIX Admin API にリソース作成リクエストを送信すると、サーバーは送信されたリクエストに対してスキーマ検証を行います。このプロセス中、スキーマにデフォルト値がマークされているがクライアントから送信されていないフィールドは、自動的に送信されたリソースに追加されます。その結果、API からリソースを再度読み取ると、初期の送信内容とは異なるものになります。
以前の ADC バージョンでは、これらのリソースを「変更済み」としてリストアップし、Admin API に更新 API リクエストを送信していました。この動作は ADC にいくつかの不確実性をもたらしましたが、Differ によってこの問題は解決されました。
-
デフォルト値のマージメカニズムは API7 バックエンドに実装され、ユーザーがローカルの YAML 設定を変更した場合にのみリソースの差分が変更として認識されるようになりました。
-
Differ の検出粒度を改善: ADC は現在、リソース本体とプラグインの次元で別々にリソース変更チェックを行い、チェック中の異常を減らすのに役立っています。
-
コード品質を最適化し、冗長なコードを簡素化して可読性を向上させ、いくつかのバグを修正しました。
リソースフィルタ
リソースラベルとリソースタイプに基づく 2 つのリソースフィルタリングメカニズムを追加しました。これらは、フェッチ、差分チェック、および同期操作中に不要なリソースを除外するために使用できます。
リソースラベルフィルタ
この機能は 0.8 バージョンで導入されました。
このフィルタは、リソースの labels
フィールドに基づいてフィルタリングを行います。ユーザーはコマンドラインで --label-selector key=value
パラメータを使用してフィルタを有効にできます。複数のフィルタ条件を設定でき、これらのルールを同時に満たすリモートリソースのみが既存として認識され、ローカルリソースには自動的にこれらのラベルが追加されます。
これにより、小さな範囲内でリソースチェックと同期を実行し、CI/CD パイプラインで実行されるタスクを分割し、変更が必要ないリソースを誤って同期して破壊することを防ぎます。
リソースタイプフィルタ
この機能は 0.9 バージョンで導入されました。
2 つの新しいコマンドラインパラメータ --include-resource-type <type>
と --exclude-resource-type <type>
を追加しました。これらは複数回設定できますが、include
と exclude
パラメータは相互に排他的です。
これらのパラメータを使用して、現在の操作から特定のリソースタイプをフィルタリングできます。例えば、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 管理の効率と柔軟性を向上させることができます。