Apicurio Registry 2.0 リリースノート
Apicurio Registry の Red Hat ビルドの新機能
概要
第1章 Apicurio Registry リリースノート リンクのコピーリンクがクリップボードにコピーされました!
Red Hat ビルドの Apicurio Registry 2.0 は、一般提供リリースとして利用できます。Apicurio Registry は、Apicurio Registry オープンソースコミュニティープロジェクトをベースとする標準イベントスキーマおよび API デザインのデータストアです。
Apicurio Registry を使用して、Web コンソール、REST API、Maven プラグイン、または Java クライアントを使用してデータの構造を管理および共有できます。たとえば、クライアントアプリケーションは、再デプロイせずに最新のスキーマ更新を Apicurio Registry に動的にプッシュまたはプルできます。また、Apicurio Registry を使用して任意のルールを作成し、レジストリーコンテンツが時間の経過と共にどのように進化するかを制御することもできます。たとえば、これには、コンテンツ検証のルールやスキーマまたは API バージョンの後方互換性と前方互換性に関するルールが含まれます。
1.1. Apicurio Registry のインストールオプション リンクのコピーリンクがクリップボードにコピーされました!
次のデータストレージオプションのいずれかを使用して、OpenShift に Apicurio Registry をインストールできます。
- AMQ Streams
- PostgreSQL データベース
詳細については、OpenShift への Red Hat build of Apicurio Registry のインストールとデプロイ を参照してください。
1.2. Apicurio Registry プラットフォームコンポーネントのバージョン リンクのコピーリンクがクリップボードにコピーされました!
Apicurio Registry 2.0.3 は、以下のバージョンをサポートします。
- OpenShift Container Platform 4.9 または 4.6
- OpenJDK 11
- AMQ Streams 1.8
- PostgreSQL 12
- Debezium 1.4
- Camel Kafka Connector - テクノロジープレビュー
1.3. Apicurio Registry の新機能 リンクのコピーリンクがクリップボードにコピーされました!
Apicurio Registry のセキュリティー
- Red Hat Single Sign-On に基づく認証: オプションでレジストリーを保護するため、REST API でユーザーを認証する必要があります (OAuth と HTTP Basic はサポートされます)。
-
ロールベースの承認: 認証が有効になっている場合、ユーザーには少なくとも
sr-admin、sr-developer、またはsr-readonlyロールの 1 つが必要です。 - 作成者のみの承認 - 認証されたユーザーがアーティファクトを元々作成しない限り、アーティファクトへの変更が阻止されるオプション。
- Kafka OAuth 認証: AMQ Streams のストレージでは、OAuth 認証を必要とする Kafka クラスターへのアクセスを設定できます。
Apicurio Registry コア
- レジストリーアーティファクトグループ - オプションでスキーマと API アーティファクトをカスタムの名前付きの論理グループへ整理
- リファクタリングされた Kafka シリアライザー/デシリアライザー (SerDes) クラス - 使いやすく、一貫性、機能に対処するための Java SerDes レイヤーへの大幅な更新
- イベントソーシング - CloudEvents 仕様に基づいて変更が行われるたびにイベントをトリガーするようにレジストリーを設定するオプション。
Apicurio Registry データストレージ
- SQL ベースのストレージ - PostgreSQL データベースをサポートする新しい SQL ストレージ実装
- Kafka ベースのストレージ - AMQ Streams を使用してアーティファクトデータと組み込み SQL データベースを保存し、メモリーに表す組み込み SQL データベースを使用した新しいハイブリッドストレージ
Apicurio Registry v2 REST API
- カスタムバージョン管理 - REST API を使用してアーティファクトを作成または更新する際に、カスタムバージョン番号を提供するオプション
- アーティファクト検索の改善 - REST API への更新により、アーティファクトの検索が改善
-
API のインポート/エクスポート - レジストリーデータを
.zip形式でエクスポートおよびインポートする操作が含まれる REST API への更新 CNCF Schema Registry API のサポート - Cloud Native Computing Foundation Schema Registry REST API の実装
注記Apicurio Registry v2 REST API は、新しいアーティファクトグループを含まない Confluent Schema Registry REST API と互換性があります。後方互換性は、既存の Apicurio Registry v1 REST API でも維持されます。
Apicurio レジストリーオペレータ
-
パフォーマンスおよび合理化の向上 - Operator は OpenShift での
Deployment(DeploymentConfigではなく)、予測可能なリソース命名 (ランダムな接尾辞なし)、および並行して作成されるリソースを使用します。 - レジストリーデータストレージ - 新しい SQL および Kafka ベースのストレージオプションのサポート。
- レジストリーセキュリティー - Red Hat Single Sign-On を使用した認証および承認設定のサポート。
-
ApicurioRegistry CRD v1 -
statusブロックの標準化されたconditionsフィールドを使用して、Operator またはアプリケーションの問題またはエラーをより適切に示します。 - マルチ namespace デプロイメント: Operator が namespace にインストールされている場合、すべての namespace (または選択したサブセット) を監視することができ、アプリケーションはすべてまたは複数の namespace にデプロイすることができます。
- 非接続インストール - ネットワークが制限された環境での OpenShift へのインストールのサポートが、バージョン 2.0.1 および 1.1.2 で追加されました。詳細は、Mirroring images for a disconnected installationを参照してください。
Apicurio Registry ユーザーのドキュメントおよび例
バージョン 2.0 の新機能で更新されたドキュメントライブラリー:
更新されたオープンソースデモアプリケーション:
1.4. 非推奨および削除された Apicurio Registry の機能 リンクのコピーリンクがクリップボードにコピーされました!
Apicurio Registry の非推奨機能
- Apicurio Registry バージョン 1.x はバージョン 2.0 で非推奨となり、近日中にフルサポートの対象外となる予定です。詳細は、Red Hat ミドルウェア製品の更新とサポートポリシー を参照してください。
Apicurio Registry で削除された機能
- Infinispan のキャッシュベースのストレージオプションが削除されました。
- Java Persistence API (JPA) ストレージオプションが、新しい PostgreSQL データベースストレージオプションに置き換えられました。
- AMQ Streams の Kafka ベースのストレージオプションは、インメモリー H2 データベースを使用した AMQ Streams の新しいハイブリッドストレージ オプションに置き換えられました。
- Apicurio Registry Java クライアントは OpenJDK 8 に対応しなくなり、代わりに OpenJDK 11 をサポートするようになりました。
1.5. Apicurio Registry デプロイメントの移行 リンクのコピーリンクがクリップボードにコピーされました!
Apicurio Registry バージョン 1.1 から 2.x への移行に関する詳細は、Red Hat build of Apicurio Registry デプロイメントの移行 を参照してください。
Apicurio Registry バージョン 2.x インスタンス間でレジストリーデータを移行する方法の詳細は、Registry REST API を使用したレジストリーコンテンツのエクスポートおよびインポート を参照してください。
1.6. Apicurio Registry の解決済みの問題 リンクのコピーリンクがクリップボードにコピーされました!
Apicurio Registry コアで解決された問題
IPT-651 - Apicurio Registry からスキーマを取得する際の Protobuf メッセージのデシリアライズエラー
Kafka プロデューサーアプリケーションはスキーマを設定できますが、コンシューマーアプリケーションはレジストリーからのスキーマ取得に失敗し、以下のようなエラーメッセージと共に org.apache.kafka.common.errors.SerializationException を発生させます。
Error deserializing Protobuf message for id 3\nCaused by: java.io.IOException: Invalid schema syntax = \"proto3\";\npackage …commons;\n\nimport \"head.proto\";\n\noption java_package = \"packaget\";\noption java_multiple_files = true;\n\nmessage AuditMessage {\n commons.Head head = 1;\n int64 id = 5;\n string user = 6;\n bytes extraData = 7;\n string signature = 8;\n}\n with refs [] of type AVRO\n\tat
IPT-625 - KafkaSQL ストレージオプションでの Apicurio Registry へのアーティファクトのアップロードエラー
KafkaSQL ストレージオプションで Apicurio Registry をインストールすると、新しいアーティファクトのアップロード時に io.apicurio.registry.storage.RegistryStorageException が発生します。考えられるエラーメッセージには、SQL error: Expected one element, but found none があります。
このエラーは、データベースシーケンスを制御するメッセージを削除する Kafka ログコンパクションにより発生しました。この問題は、データベースシーケンスを制御するメッセージが圧縮されないようにすることで修正されています。詳細は、Apicurio コミュニティーのブログポスト Resolving a bug in KafkaSQL storage for Apicurio Registryを参照してください。
IPT-159 - レジストリー v1 API および Confluent 互換性 API の不一致
Apicurio Registry v2.x に移行する既存ユーザーは、Apicurio Registry v1 シリアライザー/デシリアライザー (SerDes) を使用するすべての Kafka クライアントアプリケーションを、代わりに Apicurio Registry v2 SerDes を使用するようにアップグレードする必要がありました。
Apicurio Registry は、ENABLE_CCOMPAT_LEGACY_ID_MODE という名前の新しい環境変数を提供し、これを使用して v1 互換性 API のレガシー動作に戻すことができます。この変数が true に設定されている場合、Apicurio Registry は、互換性 API を使用してアップロードされたスキーマの一意の整数識別子として contentId の代わりに globalId を使用します。
Registry-1619 - Apicurio Registry サーバーは、ロールベースの承認なしで認証を要求するように適切に設定できません
Apicurio Registry サーバーでロールベースの承認が無効になっていると、認証も事実上無効になります。Quarkus で OpenID Connect が有効になっている場合でも、ユーザーはクレデンシャルを提供する必要はありません。ユーザーが無効なクレデンシャルを提供すると、要求は失敗します。ただし、ユーザーがクレデンシャルを提供しない場合は、匿名ユーザーの代わりに要求は成功します。また、ロールが無効になっているため、追加のチェックは行われません。
Registry-1289 - Registry does not work on IPv6
Internet Protocol v6 を使用する Kubernetes サーバーに Apicurio Registry をデプロイしようとすると、レジストリーサーバーが起動に失敗します。
Registry-1151 - Error fetching JavaScript libraries when running in a closed network
閉じられたネットワークで実行する場合、Redoc JavaScript ライブラリーは、アプリケーションに組み込まれたりバンドルされたりするのではなく、CDN を参照するため、正しく読み込まれません。
Registry-1007 - レジストリー REST API が 406 エラーを返す
リクエストに Accept: application/json ヘッダーが含まれる場合、Registry REST API は 406 エラーを返します。
Registry-711 - Apicurio Registry クライアントが Jersey HTTP クライアントで動作しない
Jersey プロバイダーと RESTEasy JAX-RS プロバイダーの両方がクラスパスにある場合、RESTEasy が優先され、RESTEasy がサポートしないように見受けられる application/octet-stream トランスポートの Jersey クライアントのサポートに依存する他の HTTP クライアント機能が中断されます。
Apicurio Registry Operator で解決された問題
Operator-41: CRD の例が空白。
提供された例の ApicurioRegistry カスタムリソース定義を空にしない必要があります。
1.7. Apicurio Registry の既知の問題 リンクのコピーリンクがクリップボードにコピーされました!
Apicurio Registry コアの既知の問題
Registry-2394 - コア v1 互換性のための Apicurio Registry API エンドポイントが認証によって適切に保護されない
従来の MY-REGISTRY-URL/api/ エンドポイントは、Apicurio Registry v2.x の MY-REGISTRY-URL/apis/registry/v1 に移動した v1 コアレジストリー API のエイリアスです。このレガシーエンドポイントは、認証が設定されている場合、現在保護されていません。この問題は、認証層が application.properties で設定された Quarkus ポリシーを使用しなくなった ApicurioRegistryv2.1.x で修正されています。
Apicurio Registry v2.0.x でこの問題を回避するには、REGISTRY_DISABLE_APIS 環境変数を /apis/ibmcompat/.,/api/. の値に設定してコア v1 のレガシーエンドポイントを無効にします。
IPT-701 - CVE-2022-23221 H2: JNDI を介したリモートサーバーからのカスタムクラスのロード
Apicurio Registry データが AMQ Streams に保存されている場合、H2 データベースコンソールにより、リモート攻撃者は JDBC URL を使用して任意コードを実行できます。Apicurio Registry はデフォルトでは脆弱ではなく、悪意のある設定変更が必要です。
Apicurio Registry operator の既知の問題
Operator-42 - OpenShift ルートの自動生成で間違ったベースホスト値が使用される場合がある
複数の routerCanonicalHostname 値がある場合、Apicurio Registry OpenShift ルートの自動生成で間違ったベースホスト値が使用される可能性があります。
Operator-32 - Operator should support SCRAM authorization without TLS, not only SCRAM+TLS
Apicurio Registry Operator は、SCRAM+TLS だけでなく、Transport Layer Security (TLS) を使用せずに Salted Challenge Response Authentication Mechanism (SCRAM) をサポートする必要があります。