Apigee Adapter for Envoy リリースノート

このページの内容は ApigeeApigee ハイブリッドに該当します。

Apigee Edge のドキュメントを表示します。

このページには、2021 年までのすべての Apigee Adapter for Envoy ソフトウェアのリリースノートが記載されています。

最新(2022 年以降)のリリースノートについては、Adapter for Envoy をご覧ください。

v2.0.4

2021 年 12 月 3 日に、Apigee Adapter for Envoy のバージョン 2.0.4 をリリースしました。

機能と改善点

  • CLI samples コマンドに対応している Envoy と Istio のバージョンのリストが更新されました。現在、samples に対応しているバージョンは次のとおりです。
    • Envoy バージョン 1.18~1.20
    • Istio バージョン 1.10~1.12

修正した問題

  • 混乱を避けるために、PEM ブロックの秘密鍵の読み込みに nil チェックが追加されました(問題 #360)。
  • リモート サービスの認証エラーがデバッグレベルでログに記録されるようになりました。API キーのトークン取得エラーは例外です。この場合、エラーはエラーレベルでログ記録されるため、apigee-remote-service-envoy のデバッグログ レベルが無効になっていても表示されます。リモート サービスログ レベルの設定をご覧ください(問題 #104)。

v2.0.3

2021 年 9 月 21 日に、Apigee Adapter for Envoy のバージョン 2.0.3 をリリースしました。

修正した問題

  • 直接のレスポンスに関するアナリティクス ロギングの問題を修正しました。この問題は、特定の状況下でのみ発生します。次に例を示します。
    • authn/z チェックが不要のリクエストでは、authContext は生成されず、動的メタデータは nil になり、アクセス ログエントリは無視されます。
    • 拒否されたレスポンスは HTTP コードではなく RPC コードを使用しているため、レコードが Apigee UI に成功として表示されます。

v2.0.2

2021 年 6 月 7 日に、Apigee Adapter for Envoy のバージョン 2.0.2 をリリースしました。

修正した問題

  • JWT クレーム スコープが nil のときに 403 エラーが発生して混乱を招く可能性のある競合状態を修正しました。

v2.0.1

2021 年 4 月 29 日(火曜日)に、Apigee Adapter for Envoy のバージョン 2.0.1 をリリースしました。

修正した問題

機能 説明
バグ

Apigee ハイブリッド v1.5.0 または Apigee とともに使用すると、v2.0.0 が機能しなくなる問題を修正しました。Apigee ハイブリッド インストールを v1.5.x にアップグレードする場合、推奨されるアダプターのアップグレード パスは次のとおりです。

  1. Apigee Adapter for Envoy を v2.0.1 にアップグレードする。
  2. Apigee ハイブリッドを v1.5.1 にアップグレードする。

Apigee を使用している場合は、アダプターを v2.0.1 にアップグレードするだけです。

v2.0.0

2021 年 4 月 6 日(火曜日)に、Apigee Adapter for Envoy のバージョン 2.0.0 をリリースしました。

機能と改善点

機能 説明
マルチテナント環境のサポート

アダプターを有効にして、Apigee 組織内の複数の環境にサービスを提供できるようになりました。この機能を使用すると、1 つの Apigee 組織に関連付けられた 1 つの Apigee Adapter for Envoy を使用して複数の環境にサービスを提供できます。以前は、1 つのアダプターが常に 1 つの Apigee 環境に関連付けられていました。この機能の詳細については、マルチテナント環境のサポートをご覧ください。

Envoy v3 API のサポート
Envoy メタデータのサポート

Envoy 1.16 移行では、ヘッダーを使用せずに ext_authz メタデータを送信できます。この変更や関連する変更を加えたことで、拒否されたリクエストに対してより適切な HTTP レスポンスコードが提供されるようになり、Envoy に RBAC フィルタをインストールする必要がなくなりました。ご覧ください。

この機能は、Envoy 1.16 以降と Istio 1.9 以降でのみサポートされています。

この変更により、次の構成が Envoy 構成ファイル(envoy-config.yaml)に追加されなくなりました。

additional_request_headers_to_log:
    - x-apigee-accesstoken
    - x-apigee-api
    - x-apigee-apiproducts
    - x-apigee-application
    - x-apigee-clientid
    - x-apigee-developeremail
    - x-apigee-environment

特殊なケースのリクエストにヘッダーを追加するには、アダプターの config.yaml ファイルでプロパティ append_metadata_headers:true を設定します。

remote-token プロキシを remote-service プロキシから分割

remote-service プロキシが 2 つの別個のプロキシにリファクタリングされました。v2.0.x のプロビジョニングでは、remote-serviceremote-token の 2 つの API プロキシがインストールされます。/token エンドポイントと /certs エンドポイントが remote-service プロキシから remote-token に移動されました。

この変更により、機能が分離されて使いやすくなりました。現在、remote-service プロキシはアダプターの内部通信にのみ使用されますが、remote-token プロキシはカスタマイズ可能なサンプル OAuth ワークフローを提供します。provision --force-proxy-install コマンドが使用されていても、カスタムの remote-token プロキシは上書きされません。

データ キャプチャのサポート

アダプターでは、Envoy メタデータを Apigee のデータ キャプチャ機能に渡すことができます。これにより、指定した変数でキャプチャされたデータが、カスタム レポートで使用するために Apigee アナリティクスに送信されます。この機能は、Apigee データ キャプチャ ポリシーに似た機能を提供します。この機能の詳細については、カスタム レポート用のデータのキャプチャをご覧ください。

RBAC は不要

前述の Envoy メタデータのサポートで説明されているとおり、別個の RBAC フィルタを必要とせずに未承認のリクエストをすぐに拒否できるようになりました。RBAC が使用されないため、クライアントはアダプターから必要に応じて次の HTTP ステータス コードを受け取ります。

  • 401 Unauthorized(未承認)
  • 403 Forbidden(アクセス拒否)
  • 429 Too Many Requests(リクエスト数が多すぎる)
  • 500 Internal Server Error(内部サーバーエラー)

未承認のリクエストを続行するには、アダプターの config.yaml ファイルで auth:allow_unauthorized:true を設定します。

x-apigee-* ヘッダーはデフォルトで追加されなくなった

前述の Envoy メタデータのサポート セクションで説明したように、x-apigee-* ヘッダーがデフォルトで追加されなくなりました。追加するには、config.yaml ファイルで append_metadata_headers:true を設定します。この構成は完全に任意で、ヘッダーをアップストリーム ターゲット サービスに転送する場合にのみ使用する必要があります。

リクエストと Apigee API プロダクト オペレーションのカスタム マッチング

api_header 構成プロパティのセマンティクスは、以前の target_header プロパティと同じままです(デフォルトではターゲット ホスト名のまま)。また、指定したヘッダーのコンテンツは引き続き、API プロダクトのリモート サービス ターゲット属性または API プロダクトのオペレーション構成の [ソース] フィールドのいずれかと一致します。

Envoy メタデータを使用してこのヘッダー値をオーバーライドするには、Envoy から apigee_api メタデータ要素をアダプターに渡して、API プロダクトのリモート サービス ターゲットまたは API プロダクト オペレーションの API ソースを直接指定します。構成するには、Envoy 構成ファイルに次のようなコードを追加します(アダプターの CLI を使用して生成できます)。

typed_per_filter_config:
  envoy.filters.http.ext_authz:
    "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute
    check_settings:
      context_extensions:
        apigee_api: httpbin.org
拒否されたリクエストの分析がすぐにログに記録される

Envoy Adapter では、拒否されたリクエストがアクセスログに返されるのを待たずに、必要に応じてすぐにそのリクエストを分析のために記録するようになりました。この方法はより効率的であり、メタデータをリクエストにアタッチする必要はありません。

UDCA のサポート終了

Apigee ハイブリッドと Apigee での Apigee の Universal Data Collection Agent(UDCA)へのストリーミングは、直接アップロードに置き換えられたため分析には必要なくなりました。この変更によって、このオプションの従来のサポートが削除されます。

プロビジョニング / バインディング CLI コマンドで Edge for Private Cloud に mTLS サポートを追加

Apigee Edge for Private Cloud のユーザーは、CLI を使用してプロダクト バインディングをプロビジョニングまたは一覧表示する際に、クライアント側の TLS 証明書とルート証明書をそれぞれ ‑‑tls‑cert‑‑tls‑key‑‑tls‑ca で指定できます。

アダプターと Apigee ランタイム間の mTLS サポート

アダプターと Apigee ランタイムの間で mTLS を使用するために、アダプターの config.yaml ファイルの tenant セクションでクライアント側 TLS 証明書を指定できます。この変更は、サポートされているすべての Apigee プラットフォームに適用されます。また、それにより、Apigee Edge for Private Cloud プラットフォームの分析用の mTLS も有効化されます。詳細については、アダプターと Apigee ランタイム間の mTLS の構成をご覧ください。

その他の問題と修正

  • 同じ API ソースを持つ複数のオペレーション構成が同じ割り当てバケット ID を共有して、割り当ての計算で競合が発生する問題を修正しました(問題 #34)。
  • 動詞が指定されていないオペレーションによりリクエストが拒否される問題を修正しました(動詞が指定されていない場合はすべての動詞を許可する動作が想定されています)(問題 #39)。

v1.4.0

2020 年 12 月 16 日(水)に、Apigee Adapter for Envoy のバージョン 1.4.0 をリリースしました。

対応プラットフォーム

MacOS、Linux、Windows のバイナリを公開しています。

Google の distroless、Ubuntu、BoringCrypto を使用する Ubuntu の Docker イメージを公開しています。

このバージョンでは、次のプラットフォームをサポートしています。

  • Apigee ハイブリッド バージョン 1.3.x、1.4.x(リリース日は保留中)、Apigee for Public Cloud、Apigee for Private Cloud、Apigee on Google Cloud
  • Istio バージョン 1.5、1.6、1.7、1.8
  • Envoy バージョン 1.14、1.15、1.16

機能と改善点

機能 説明
remote-service プロキシでは、リモート サービス ターゲットを使用する API プロダクトとの関連付けが不要になりました。

この関連付けが不要になったため、次の変更点に注意してください。

  • プロビジョニング時に、remote-service API プロダクトが作成されなくなりました。
  • bindings verify CLI コマンドは関連性がなくなり、非推奨となりました。
Apigee 組織管理者ロールがプロビジョニングに不要になりました。

プロビジョニングに組織管理者権限を使用するのではなく、IAM ロールの API 作成者とデプロイ担当者を使用できるようになりました。正常にプロビジョニングするには、両方のロールを付与する必要があります
(Apigee on Google Cloud と Apigee ハイブリッドにのみ適用)。

その他の問題と修正

  • --rotate オプションを指定せずに Apigee を再プロビジョニングするとエラーで終了する問題を修正しました。
  • プロビジョニング CLI で、特定の config.yaml ファイルから分析サービス アカウントの認証情報を読み取って再利用できるようになりました(問題 #133)。

v1.3.0

2020 年 11 月 23 日(月曜日)に、Apigee Adapter for Envoy のバージョン 1.3.0 をリリースしました。

対応プラットフォーム

MacOS、Linux、Windows のバイナリを公開しています。

Google の distroless、Ubuntu、BoringCrypto を使用する Ubuntu の Docker イメージを公開しています。

このバージョンでは、次のプラットフォームをサポートしています。

  • Apigee ハイブリッド バージョン 1.3.x、1.4.x(リリース日は保留中)、Apigee for Public Cloud、Apigee for Private Cloud、Apigee on Google Cloud
  • Istio バージョン 1.5、1.6、1.7、1.8
  • Envoy バージョン 1.14、1.15、1.16

機能と改善点

機能 説明
API プロダクト OperationGroups のサポート OperationGroups は、HTTP メソッドを使用して、プロキシまたはリモート サービスのリソースと関連する割り当ての適用をバインドします。詳細については、OperationGroup をご覧ください。
(Apigee on Google Cloud と Apigee ハイブリッドにのみ適用)
サンプル生成から動的転送プロキシのサポートを削除 この変更により、API プロダクトで設定されているリモート サービス ターゲット ホストとホスト名が異なる場合、クライアントは HOST ヘッダーを含める必要があります。次に例を示します。
curl -i http://localhost:8080/httpbin/headers -H "HOST:httpbin.org"

API プロダクトを作成するをご覧ください。

サービス アカウントと Workload Identity のサポート Apigee ハイブリッド クラスタの外部でアダプターを実行するときに分析データを Apigee にアップロードできるようにするには、apigee-remote-service-cli provision コマンドで analytics-sa パラメータを使用する必要があります。また、アダプターが Google Kubernetes Engine(GKE)の Workload Identity もサポートするようになりました。プロビジョニング コマンドをご覧ください。
(Apigee on Google Cloud と Apigee ハイブリッドにのみ適用)
新しい jwt_provider_key 構成属性 このキーは構成ファイルに追加されます。Envoy 構成では JWT プロバイダの payload_in_metadata キー、Istio 構成では RequestAuthentication JWT の発行元を表します。
KeepAliveMaxConnectionAge 構成属性のデフォルトが 1 分になりました。 以前のデフォルトは 10 分でした。この変更により、よりスムーズなスケーリングが可能になります。この値は、アクセスログ ストリームの存続期間にも使用されます。構成ファイルをご覧ください。
CLI コマンドが削除されました。 次の CLI コマンドは非推奨になりました。API プロダクトのリモート サービス ターゲットを更新する場合は、代わりに Apigee API を使用することをおすすめします。
  • apigee-remote-service-cli bindings add
  • apigee-remote-service-cli bindings remove
新しい CLI コマンドの追加 コマンド:
apigee-remote-service-cli samples templates

samples create コマンドで --template フラグを指定して使用できるオプションを示します。CLI リファレンスをご覧ください。

既存の CLI コマンドが変更されました。 apigee-remote-service-cli samples create コマンドが変更されました。Envoy テンプレートや Istio テンプレートに固有のフラグは厳密にチェックされ、誤って使用されたフラグではエラーが返されます。native テンプレート オプションは非推奨です。使用可能なテンプレートのリストを取得するには、apigee-remote-service-cli samples templates コマンドを使用します。CLI リファレンスもご覧ください。
/token エンドポイント レスポンスが OAuth2 仕様を遵守するようになりました。 レスポンスに access_token パラメータが追加され、token パラメータが非推奨になりました。

v1.2.0

2020 年 9 月 30 日(水曜日)に、Apigee Adapter for Envoy のバージョン 1.2.0 をリリースしました。

対応プラットフォーム

MacOS、Linux、Windows のバイナリを公開しています。

Google の distroless、Ubuntu、BoringCrypto を使用する Ubuntu の Docker イメージを公開しています。

このバージョンでは、次のプラットフォームをサポートしています。

  • Apigee ハイブリッド バージョン 1.3.x
  • Istio バージョン 1.5、1.6、1.7
  • Envoy バージョン 1.14、1.15

機能と改善点

機能 説明
Apigee on Google Cloud のサポート Apigee on Google Cloud で Apigee Adapter for Envoy を使用できるようになりました。独自のクラスタでアダプターを実行することも、ネイティブ バイナリとしてまたはコンテナ内で Remote Service for Envoy を実行することでアダプターを実行することもできます。プロビジョニング コマンドを使用して、Apigee にアダプターをプロビジョニングします。
分析データの直接アップロード Apigee に分析データを直接アップロードするように Apigee Adapter を構成できるようになりました。Apigee ハイブリッドを使用している場合、この新機能によって、Apigee ハイブリッドがインストールされているクラスタの外部で Kubernetes クラスタにアダプターをデプロイできます。直接アップロードを有効にするには、provision コマンドで新しい --analytics-sa フラグを使用します。プロビジョニング コマンドをご覧ください。
API プロダクト データが Apigee から読み込まれた後に、ヘルスチェックから「Ready」が返される API プロダクト データが Apigee から読み込まれるまで、Kubernetes ヘルスチェックから「Ready」は返されません。この変更により、準備ができるまでは新しくインスタンス化されたアダプターにトラフィックが送信されないため、スケーリングとアップグレードに役立ちます。

その他の問題と修正

  • 潜在的な割り当て同期のデッドロックの問題が修正されました(問題 #17)。
  • Prometheus のアノテーションが Pod の仕様に移動されました(問題 #69)。
  • 不適切に表示される確認エラーの問題が修正されました(問題 #62)。

v1.1.0

2020 年 8 月 26 日(水曜日)に、Apigee Adapter for Envoy のバージョン 1.1.0 をリリースしました。

対応プラットフォーム

MacOS、Linux、Windows のバイナリを公開しています。

Google の distroless、Ubuntu、BoringCrypto を使用する Ubuntu の Docker イメージを公開しています。

バージョン 1.1.0 では、次のプラットフォームをサポートしています。

  • Apigee ハイブリッド バージョン 1.3
  • Istio バージョン 1.5、1.6、1.7
  • Envoy バージョン 1.14、1.15

機能と改善点

機能 説明
バインディングの確認 新しいコマンドの apigee-remote-service-cli bindings verify が CLI に追加されました。このコマンドは、バインドされている特定の API プロダクトとそれに関連付けられたデベロッパー アプリにも、リモート サービス プロダクトが関連付けられていることを確認します。バインディングを確認するをご覧ください。
サンプルの生成 新しいコマンドの apigee-remote-service-cli samples create が CLI に追加されました。このコマンドを使用すると、ネイティブの Envoy または Istio のデプロイ用にサンプル構成ファイルが作成されます。このコマンドで生成した構成ファイルは、以前のバージョンの Adapter for Envoy にインストールされたサンプル ファイルと置き換えられます。サンプル コマンドをご覧ください。
OAuth2 認証 Apigee で多要素認証(MFA)が有効になっている場合、アダプターは OAuth2 認証を使用するようになりました。--legacy フラグを使用する場合は、必ず --mfa フラグを使用してください。
Distroless コンテナ アダプターは、デフォルトの Docker イメージベースとして scratch の代わりに Google の Distroless(gcr.io/distroless/base)イメージを使用するようになりました。

その他の問題と修正

  • OPDK のバインディング コマンドに対する CLI の問題が修正されました(#29)。
  • 接続が失われると、割り当てが停止することがあります(apigee / apigee-remote-service-envoy)(#31)。
  • Docker イメージが、root 以外のユーザー(999)でビルドされるようになりました。
  • Kubernetes のサンプルでは、root 以外のユーザーにする必要があります。
  • プロキシ エンドポイントに対する curl コマンドで、--http1.1 が不要になりました。このフラグは、例から削除されています。

v1.0.0

2020 年 7 月 31 日(金曜日)に、Apigee Adapter for Envoy の一般提供版バージョンをリリースしました。

対応プラットフォーム

MacOS、Linux、Windows のバイナリを公開しています。

スクラッチ、Ubuntu、BoringCrypto を使用する Ubuntu の Docker イメージを公開しています。

バージョン 1.0.0 では、次のプラットフォームをサポートしています。

  • Apigee ハイブリッド バージョン 1.3
  • Istio バージョン 1.5、1.6
  • Envoy バージョン 1.14、1.15

追加と変更

v1.0-beta4 リリースと一般提供までの間に、アダプターに次の変更が加えられました。

  • Go Boring のビルド

    FIPS 遵守の Go BoringSSL ライブラリを使用する新しいビルドを利用できるようになりました。

  • ログレベルのフラグの変更

    apigee-remote-service-envoy サービスのロギングレベルのフラグが、整合性を保つために変更されました。

    旧フラグ 新フラグ
    log_level log-level
    json_log json-log
  • 新しい CLI フラグ

    CLI の token コマンドに、次の新フラグが追加されました。

    フラグ 説明
    --legacy Apigee Cloud を使用している場合は、このフラグを設定します。
    --opdk Apigee for Private Cloud を使用している場合は、このフラグを設定します。