Service Registry デプロイメントの移行
Service Registry 2.0
概要
前書き
多様性を受け入れるオープンソースの強化
Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、Red Hat CTO である Chris Wright のメッセージをご覧ください。
第1章 Service Registry 1.1 から 2.x への移行
Service Registry 2.x には、前リリースの Service Registry 1.1 からの変更点を含む新機能が含まれています。ここでは、Service Registry 1.1 とバージョン 2.x との間の主な変更点について説明します。
2.x での重大な変更により、自動アップグレードは行われず、移行作業が必要となります。これには、既存レジストリーのデータを新規レジストリーに移動します。また、既存のレジストリークライアントアプリケーションを見直し、新しい要件に合わせて設定を更新する必要があります。
バージョン 2.x に移行する際には、以下の主要な変更点を考慮する必要があります。
1.1. 新規データストレージオプション
Service Registry 1.1 の既存のレジストリーデータストレージオプション (streams
、jpa
、および infinispan
) は、バージョン 2.x (sql
および kafkasql
) の新しいストレージオプションに置き換えられました。これらの新たなストレージオプションは、より堅牢で、パフォーマンスが高く、メンテナンス性に優れた Service Registry デプロイメントを提供します。
選択したストレージオプションで Service Registry 2.x をデプロイする方法は、『Installing and deploying Service Registry on OpenShift』を参照してください。
1.2. 新しい v2 REST API
Service Registry 2.x には、アーティファクトグループをサポートし、長期的な保守性を向上する新しい REST API が含まれています。Service Registry は、Confluent や IBM スキーマレジストリー API など、元のレジストリー v1 REST API と互換性 API をサポートします。また、Service Registry は CNCF Cloud Events 仕様で提供される Schema Registry 仕様を実装するようになりました。
1.3. リファクタリングされた Java クライアントライブラリー
-
サービスレジストリーの Java クライアントクラスは、バージョン 2.x では
apicurio-registry-client
という別の Maven モジュールで提供されています。 - Kakfa クライアントシリアライザーおよびデシリアライザー(SerDe)クラスは、バージョン 2.x ではバージョン 2.x で利用できます。1 つはサポートされる各データ形式に 1 つずつあります。それが Apache Avro、Protobuf、および JSON Schema です。これで、関係のない推移的な依存関係にプルせずに必要なモジュールのみを使用できるようになりました。
第2章 Service Registry データの移行
Service Registry 2.x にデータを移行するには、既存の 1.1 デプロイメントからすべてのデータをエクスポートし、それを新しい 2.x デプロイメントにインポートする必要があります。Kafka アプリケーションのスキーマレジストリーとして Service Registry を使用している場合、Service Registry に保存されるスキーマのグローバル識別子が各 Kafka メッセージにあるため、データの移行が重要になります。この識別子はレジストリーデータの移行時に保持される必要があります。
Service Registry 2.x は、レジストリーデプロイメントからすべてのデータを一括インポート/エクスポートするための API を提供します。これにより、既存レジストリーからデータをインポートする際にすべての識別子が保持されることを保証します。エクスポート API は、アーティファクトのすべての情報が含まれるカスタムの .zip
ファイルをダウンロードします。インポート API はこの .zip
を受け入れ、単一のバッチですべてのアーティファクトをレジストリーに読み込みます。
Service Registry 1.1 はインポート/エクスポート API を提供しません。ただし、バージョン 2.x は Service Registry 1.1 と互換性のあるエクスポートツールを提供し、.zip
をエクスポートして、2.x レジストリーにインポートすることができます。このツールは、一般的な既存 API を使用してレジストリー内のすべてのコンテンツをエクスポートします。ただし、2.x エクスポート API よりもパフォーマンスが劣るため、1.1 レジストリーからエクスポートする場合にのみ使用してください。
前提条件
- エクスポート元の 1.1 サーバーの Service Registry インスタンスと、インポート先の 2.x サーバーが稼働している。
- Red Hat カスタマーポータルから Service Registry exportV1 ツール をダウンロードする。これは、コマンドラインで実行可能な Java アプリケーションです。
手順
exportV1
ツールを使用して Service Registry 1.1 からすべてのデータをエクスポートします。このコマンドにより、現在のディレクトリーにregistry-export.zip
ファイルが生成されます。java -jar apicurio-registry-utils-exportV1-2.0.1.Final.jar http://old-registry.my-company.com/api
java -jar apicurio-registry-utils-exportV1-2.0.1.Final.jar http://old-registry.my-company.com/api
Copy to Clipboard Copied! インポート API を使用して
.zip
ファイルを Service Registry 2.x にインポートします。curl -X POST "http://new-registry.my-company.com/apis/registry/v2/admin/import" \ -H "Accept: application/json" -H "Content-Type: application/zip" \ --data-binary @registry-export.zip
curl -X POST "http://new-registry.my-company.com/apis/registry/v2/admin/import" \ -H "Accept: application/json" -H "Content-Type: application/zip" \ --data-binary @registry-export.zip
Copy to Clipboard Copied! 以下のコマンドを実行して、count フィールドを比較することで、すべてのアーティファクトが新しい 2.x レジストリーにインポートされていることを確認します。
curl "http://old-registry.my-company.com/api/search/artifacts"
curl "http://old-registry.my-company.com/api/search/artifacts"
Copy to Clipboard Copied! curl "http://new-registry.my-company.com/apis/registry/v2/search/artifacts"
curl "http://new-registry.my-company.com/apis/registry/v2/search/artifacts"
Copy to Clipboard Copied!
第3章 Service Registry クライアントアプリケーションの移行
既存のService Registry クライアントアプリケーションを確認し、Maven の依存関係と Java クライアントの設定がバージョン 2.x の新しい要件を満たしていることを確認する必要があります。たとえば、これには、Service Registry Java REST クライアントライブラリーまたは Kafka クライアントシリアライザー/デシリアライザー (Serdes) ライブラリーの新しい Maven 依存関係が含まれます。また、新しいレジストリー v2 API パスに合わせて Java アプリケーション設定を更新する必要もあります。
前提条件
- 既存の Service Registry 1.1 Java アプリケーションまたは SerDes のある Kafka クライアントプロデューサーおよびコンシューマー Java アプリケーション
手順
Service Registry Java REST クライアントを使用している場合は、バージョン 2.x で再パッケージされた Service Registry Java クライアントライブラリーの Maven 依存関係を変更する必要があります。
<dependency> <groupId>io.apicurio</groupId> <artifactId>apicurio-registry-client</artifactId> <version>2.0.1.Final</version> </dependency>
<dependency> <groupId>io.apicurio</groupId> <artifactId>apicurio-registry-client</artifactId> <version>2.0.1.Final</version> </dependency>
Copy to Clipboard Copied! Javaクライアントアプリケーションでは、レジストリーのURL 設定を変更し、既存の v1 API パスではなく新しい v2 パスを示すようにする必要があります。以下に例を示します。
public class ClientExample { private static final RegistryRestClient client; public static void main(String[] args) throws Exception { // Create a registry client String registryUrl = "https://new-registry.my-company.com/apis/registry/v2"; RegistryClient client = RegistryClientFactory.create(registryUrl); } }
public class ClientExample { private static final RegistryRestClient client; public static void main(String[] args) throws Exception { // Create a registry client String registryUrl = "https://new-registry.my-company.com/apis/registry/v2"; RegistryClient client = RegistryClientFactory.create(registryUrl); } }
Copy to Clipboard Copied! Java クライアントの詳細は、『Service Registry User Guide』を参照してください。
Service Registry SerDes ライブラリーを使用している場合は、バージョン 2.x で再パッケージ化された Maven 依存関係を変更する必要があります。Service Registry 1.1 では、SerDes ライブラリーはすべて 1 つの Maven 依存関係のみで提供されていました。
<dependency> <groupId>io.apicurio</groupId> <artifactId>apicurio-registry-utils-serde</artifactId> <version>1.3.2.Final</version> </dependency>
<dependency> <groupId>io.apicurio</groupId> <artifactId>apicurio-registry-utils-serde</artifactId> <version>1.3.2.Final</version> </dependency>
Copy to Clipboard Copied! Service Registry 2.x では、SerDes ライブラリーは、ユースケースに応じて、サポートされる各データ形式 (
avro
、protobuf
、およびjson schema
) ごとに 3 つの Maven 依存関係に分割されました。<dependency> <groupId>io.apicurio</groupId> <artifactId>apicurio-registry-serdes-avro-serde</artifactId> <version>2.0.1.Final</version> </dependency> <dependency> <groupId>io.apicurio</groupId> <artifactId>apicurio-registry-serdes-protobuf-serde</artifactId> <version>2.0.1.Final</version> </dependency> <dependency> <groupId>io.apicurio</groupId> <artifactId>apicurio-registry-serdes-jsonschema-serde</artifactId> <version>2.0.1.Final</version> </dependency>
<dependency> <groupId>io.apicurio</groupId> <artifactId>apicurio-registry-serdes-avro-serde</artifactId> <version>2.0.1.Final</version> </dependency> <dependency> <groupId>io.apicurio</groupId> <artifactId>apicurio-registry-serdes-protobuf-serde</artifactId> <version>2.0.1.Final</version> </dependency> <dependency> <groupId>io.apicurio</groupId> <artifactId>apicurio-registry-serdes-jsonschema-serde</artifactId> <version>2.0.1.Final</version> </dependency>
Copy to Clipboard Copied! Kafka プロデューサーおよびコンシューマーアプリケーションでは、レジストリーのURL 設定を変更し、既存の v1 API パスではなく新しい v2 パスを示すようにする必要があります。以下に例を示します。
既存のレジストリー v1 API パス:
props.putIfAbsent(AbstractKafkaSerDe.REGISTRY_URL_CONFIG_PARAM, "http://old-registry.my-company.com/api");
props.putIfAbsent(AbstractKafkaSerDe.REGISTRY_URL_CONFIG_PARAM, "http://old-registry.my-company.com/api");
Copy to Clipboard Copied! 新規のレジストリー v2 API パス:
props.putIfAbsent(SerdeConfig.REGISTRY_URL, "http://new-registry.my-company.com/apis/registry/v2");
props.putIfAbsent(SerdeConfig.REGISTRY_URL, "http://new-registry.my-company.com/apis/registry/v2");
Copy to Clipboard Copied! リファクタリングされた SerDes ライブラリーには、設定プロパティーの他の重要な変更も含まれています。SerDes の設定に関する詳細は、『Service Registry User Guide』を参照してください。
付録A サブスクリプションの使用
Service Registry は、ソフトウェアサブスクリプションから提供されます。サブスクリプションを管理するには、Red Hat カスタマーポータルでアカウントにアクセスします。
アカウントへのアクセス
- access.redhat.com に移動します。
- アカウントがない場合は、作成します。
- アカウントにログインします。
サブスクリプションのアクティベート
- access.redhat.com に移動します。
- サブスクリプション に移動します。
- Activate a subscription に移動し、16 桁のアクティベーション番号を入力します。
ZIP および TAR ファイルのダウンロード
ZIP または TAR ファイルにアクセスするには、カスタマーポータルを使用して、ダウンロードする関連ファイルを検索します。RPM パッケージを使用している場合は、この手順は必要ありません。
- ブラウザーを開き、access.redhat.com/downloads で Red Hat カスタマーポータルの Product Downloads ページにログインします。
- Integration and Automation カテゴリーで Red Hat Integration エントリーを見つけます。
- 必要な Service Registry 製品を選択します。Software Downloads ページが開きます。
- コンポーネントの Download リンクをクリックします。
パッケージ用のシステムの登録
Red Hat Enterprise Linux に RPM パッケージをインストールするには、システムを登録する必要があります。ZIP または TAR ファイルを使用している場合、この手順は必要ありません。
- access.redhat.com に移動します。
- Registration Assistant に移動します。
- ご使用の OS バージョンを選択し、次のページに進みます。
- システムターミナルで listed コマンドを使用して、登録を完了します。
詳細は 「How to Register and Subscribe a System to the Red Hat Customer Portal」を参照してください。