OpenShift での Service Registry のインストールおよびデプロイ
Service Registry 2.0
概要
前書き
多様性を受け入れるオープンソースの強化
Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。これは大規模な取り組みであるため、これらの変更は今後の複数のリリースで段階的に実施されます。詳細は、Red Hat CTO である Chris Wright のメッセージをご覧ください。
第1章 Service Registry Operator クイックスタート
本章では、コマンドラインで Service Registry Operator をすばやくインストールする方法を説明します。
このクイックスタート例では、SQL データベースストレージオプションを使用して Service Registry をデプロイします。
実稼働環境で推奨されるインストールオプションは OpenShift OperatorHub を使用することです。推奨されるストレージオプションは SQL または Kafka です。
1.1. Quickstart Service Registry Operator のインストール
Service Registry Operator は、ダウンロードしたインストールファイルとサンプルを使用して、Operator Lifecycle Manager を使用せずにコマンドラインで迅速に導入することができます。
前提条件
-
Red Hat Integration Downloads に移動し、製品バージョンを選択し、Service Registry CRD の
.zip
ファイルの例をダウンロードする必要があります。
手順
インストールのプロジェクトを作成します (例:
service-registry
)。NAMESPACE="service-registry" oc new-project "$NAMESPACE"
install/
フォルダーにあるファイルを適用します。cat install/install.yaml | sed "s/apicurio-registry-operator-namespace/$NAMESPACE/g" | oc apply -f -
1.2. Quickstart Service Registry デプロイメント
新しい Service Registry デプロイメントを作成するには、SQL スデータベーストレージオプションを使用します。そのためには、外部 PostgreSQL ストレージを前提条件として設定する必要があります。
前提条件
- Service Registry Operator がすでにインストールされていることを確認する。
- OpenShift クラスターから PostgreSQL データベースにアクセスできる。
手順
以下の例のように、データベースコネクションが設定された
ApicurioRegistry
カスタムリソース (CR) を作成します。SQL ストレージの CR の例
apiVersion: registry.apicur.io/v1 kind: ApicurioRegistry metadata: name: example-apicurioregistry-sql spec: configuration: persistence: "sql" sql: dataSource: url: "jdbc:postgresql://<service name>.<namespace>.svc:5432/<database name>" userName: "postgres" password: "<password>" # Optional
Operator がデプロイされているのと同じ namespace に
ApicurioRegistry
CR を作成します。oc project "$NAMESPACE" oc apply -f ./examples/apicurioregistry_sql_cr.yaml
第2章 OpenShift での Service Registry のインストール
本章では、OpenShift Container Platform に Service Registry をインストールする方法を説明します。
前提条件
- 『Service Registry User Guide』の概要を読む。
2.1. OpenShift OperatorHub からの Service Registry のインストール
OperatorHub から OpenShift クラスターに Service Registry Operator をインストールできます。OperatorHub は OpenShift Container Platform Web コンソールから使用でき、クラスター管理者が Operator を検出およびインストールするためのインターフェースを提供します。詳細は、OpenShift のドキュメント を参照してください。
環境に応じて、複数の Service Registry インスタンスをインストールできます。インスタンス数は、Service Registry に保存されているアーティファクトの数および種類と、選択したストレージオプションによって異なります。
前提条件
- クラスター管理者として OpenShift クラスターにアクセスできる。
手順
- OpenShift Container Platform Web コンソールで、クラスター管理者権限を持つアカウントを使用してログインします。
新しい OpenShift プロジェクトを作成します。
- 左側のナビゲーションメニューで、Home、Project、Create Project と順にクリックします。
-
プロジェクト名 (例:
my-project
) を入力し、Create をクリックします。
- 左側のナビゲーションメニューで、Operators をクリックした後、OperatorHub をクリックします。
-
Filter by keyword テキストボックスに
registry
を入力し、Red Hat Integration - Service Registry Operator を見つけます。 - Operator に関する情報を読み、Install をクリックして Operator サブスクリプションページを表示します。
サブスクリプション設定を選択します。以下に例を示します。
Update Channel: 以下のいずれかを選択します。
- 2.0.x: 2.0.1 や 2.0.2 などのパッチの更新のみが含まれます。たとえば、2.0.x へのインストールは自動的に 2.1.x を無視します。
- 2.x: 2.1.0 や 2.0.1 などのすべてのマイナーおよびパッチの更新が含まれます。たとえば、2.0.x へのインストールは自動的に 2.1.x にアップグレードされます。
Installation Mode: 以下のいずれかを選択します。
- All namespaces on the cluster (default)
- A specific namespace on the cluster および my-project
- Approval Strategy: Automatic または Manual を選択します。
- Install をクリックし、Operator が使用できるようになるまでしばらく待ちます。
第3章 AMQ Streams での Service Registry ストレージのデプロイ
本章では、AMQ Streams で Service Registry データストレージをインストールおよび設定する方法を説明します。
3.1. OpenShift OperatorHub からの AMQ Streams のインストール:
AMQ Streams がインストールされていない場合は、OperatorHub から OpenShift クラスターに AMQ Streams Operator をインストールできます。OperatorHub は OpenShift Container Platform Web コンソールから使用でき、クラスター管理者が Operator を検出およびインストールするためのインターフェースを提供します。詳細は、OpenShift のドキュメント を参照してください。
前提条件
- クラスター管理者として OpenShift クラスターにアクセスできる必要があります。
- AMQ Streams のインストールに関する詳細は、「AMQ Streams on OpenShift の使用」を参照してください。ここでは、OpenShift OperatorHub を使用したインストールの簡単な例を示します。
手順
- OpenShift Container Platform Web コンソールで、クラスター管理者権限を持つアカウントを使用してログインします。
-
AMQ Streams をインストールする OpenShift プロジェクトに切り替えます。たとえば、Project ドロップダウンメニューから、
my-project
を選択します。 - 左側のナビゲーションメニューで、Operators をクリックした後、OperatorHub をクリックします。
-
Filter by keyword テキストボックスに
AMQ Streams
を入力し、Red Hat Integration - AMQ Streams を見つけます。 - Operator に関する情報を読み、Install をクリックして Operator サブスクリプションページを表示します。
サブスクリプション設定を選択します。以下に例を示します。
- チャネルの更新および amq-streams-1.8.x
Installation Mode: 以下のいずれかを選択します。
- All namespaces on the cluster (default)
- A specific namespace on the cluster > my-project
- Approval Strategy: Automatic または Manual を選択します。
- Install をクリックし、Operator が使用できるようになるまでしばらく待ちます。
3.2. OpenShift での Kafka ストレージを使用した Service Registry の設定
ここでは、AMQ Streams on OpenShift を使用して Service Registry に Kafka ベースのストレージを設定する方法を説明します。kafkasql
ストレージオプションは、インメモリー H2 データベースと共に Kafka ストレージを使用します。このストレージオプションは、persistent
ストレージが OpenShift の Kafka クラスターに設定されている場合に、実稼働環境に適しています。
既存の Kafka クラスターに Service Registry をインストールするか、環境に応じて新しい Kafka クラスターを作成できます。
前提条件
- クラスター管理者として OpenShift クラスターにアクセスできる。
- Service Registry がすでにインストールされている。2章OpenShift での Service Registry のインストール を参照してください。
- AMQ Streams がすでにインストールされている。「OpenShift OperatorHub からの AMQ Streams のインストール:」 を参照してください。
手順
- OpenShift Container Platform Web コンソールで、クラスター管理者権限を持つアカウントを使用してログインします。
Kafka クラスターがまだ設定されていない場合は、AMQ Streams を使用して新しい Kafka クラスターを作成します。たとえば、OpenShift OperatorHub では以下を実行します。
- Installed Operators をクリックしてから Red Hat Integration - AMQ Streams をクリックします。
- Provided APIs、Kafka と選択し、Create Instance をクリックして新しい Kafka クラスターを作成します。
適切にカスタムリソース定義を編集し、Create をクリックします。
警告デフォルトの例では、3 つの Zookeeper ノード、3 つの ノード、および
ephemeral
ストレージを持つ 1 つの Kafka クラスターが作成されます。この一時ストレージは開発およびテストにのみ適しており、実稼働には適していません。詳細は、『Using AMQ Streams on OpenShift』を参照してください。
- クラスターの準備ができたら、Provided APIs > Kafka > my-cluster > YAML をクリックします。
status
ブロックで、bootstrapServers
値のコピーを作成します。これは、後ほど Service Registry のデプロイメントで使用します。以下に例を示します。status: ... conditions: ... listeners: - addresses: - host: my-cluster-kafka-bootstrap.my-project.svc port: 9092 bootstrapServers: 'my-cluster-kafka-bootstrap.my-project.svc:9092' type: plain ...
- Installed Operators > Red Hat Integration - Service Registry > ApicurioRegistry > Create ApicurioRegistry とクリックします。
以下のカスタムリソース定義に貼り付けますが、先ほどコピーした
bootstrapServers
の値を使用します。apiVersion: registry.apicur.io/v1 kind: ApicurioRegistry metadata: name: example-apicurioregistry-kafkasql spec: configuration: persistence: 'kafkasql' kafkasql: bootstrapServers: 'my-cluster-kafka-bootstrap.my-project.svc:9092'
- Create をクリックし、OpenShift で Service Registry ルートが作成されるまで待機します。
Networking > Route をクリックして、Service Registry Web コンソールの新規ルートにアクセスします。以下に例を示します。
http://example-apicurioregistry-kafkasql.my-project.my-domain-name.com/
その他のリソース
- AMQ Streams を使用した Kafka クラスターおよびトピックの作成に関する詳細は、『AMQ Streams on OpenShift の使用』を参照してください。
3.3. TLS セキュリティーでの Kafka ストレージの設定
AMQ Streams Operator および Service Registry Operator を、暗号化された Transport Layer Security (TLS) 接続を使用するように設定できます。
前提条件
- OperatorHub またはコマンドラインを使用して Service Registry Operator をインストールする。
- AMQ Streams Operator をインストールする、または Kafka が OpenShift クラスターからアクセスできる。
ここでは、AMQ Streams Operator が利用可能であることを前提としていますが、任意の Kafka デプロイメントを使用できます。この場合、Service Registry Operator が想定する Openshift シークレットを手動で作成する必要があります。
手順
- OpenShift Web コンソールで Installed Operators をクリックし、AMQ Streams Operator の詳細を選択してから、Kafka タブをクリックします。
- Create Kafka をクリックし、Service Registry ストレージの新しい Kafka クラスターをプロビジョニングします。
以下のように、Kafka クラスターの TLS 認証を使用するように
authorization
およびtls
フィールドを設定します。apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster namespace: registry-example-kafkasql-tls # Change or remove the explicit namespace spec: kafka: config: offsets.topic.replication.factor: 3 transaction.state.log.replication.factor: 3 transaction.state.log.min.isr: 2 log.message.format.version: '2.7' inter.broker.protocol.version: '2.7' version: 2.7.0 storage: type: ephemeral replicas: 3 listeners: - name: tls port: 9093 type: internal tls: true authentication: type: tls authorization: type: simple entityOperator: topicOperator: {} userOperator: {} zookeeper: storage: type: ephemeral replicas: 3
Service Registry がデータを保存するために使用するデフォルトの Kafka トピック名は
kafkasql-journal
です。このトピックは Service Registry によって自動的に作成されます。適切な環境変数 (デフォルト値) を設定して、この動作またはデフォルトのトピック名を上書きできます。-
REGISTRY_KAFKASQL_TOPIC_AUTO_CREATE=true
-
REGISTRY_KAFKASQL_TOPIC=kafkasql-journal
Kafka トピックを手動で作成しない場合は、次の手順を省略します。
-
Kafka Topic タブをクリックしてから Create Kafka Topic をクリックし、
kafkasql-journal
トピックを作成します。apiVersion: kafka.strimzi.io/v1beta1 kind: KafkaTopic metadata: name: kafkasql-journal labels: strimzi.io/cluster: my-cluster namespace: registry-example-kafkasql-tls spec: partitions: 2 replicas: 1 config: retention.ms: 604800000 segment.bytes: 1073741824
Kafka User リソースを作成し、Service Registry ユーザーの認証および承認を設定します。
metadata
セクションでユーザー名を指定するか、デフォルトのmy-user
を使用できます。apiVersion: kafka.strimzi.io/v1beta1 kind: KafkaUser metadata: name: my-user labels: strimzi.io/cluster: my-cluster namespace: registry-example-kafkasql-tls spec: authentication: type: tls authorization: acls: - operation: All resource: name: '*' patternType: literal type: topic - operation: All resource: name: '*' patternType: literal type: cluster - operation: All resource: name: '*' patternType: literal type: transactionalId - operation: All resource: name: '*' patternType: literal type: group type: simple
注記Service Registry が必要とするトピックおよびリソースに合わせて承認を設定する必要があります。これは、単純な許容例です。
Workloads をクリックしてから Secrets をクリックし、Service Registry が Kafka クラスターに接続するために AMQ Stremas によって作成される 2 つのシークレットを見つけます。
-
my-cluster-cluster-ca-cert
- Kafka クラスターの PKCS12 トラストストアが含まれます。 my-user
- ユーザーのキーストアが含まれます。注記シークレットの名前は、クラスターまたはユーザー名によって異なります。
-
シークレットを手動で作成する場合は、以下のキーと値のペアを含める必要があります。
my-cluster-ca-cert
-
ca.p12
- PKCS12 形式のトラストストア -
ca.password
- トラストストアのパスワード
-
my-user
-
user.p12
- PKCS12 形式のキーストア -
user.password
- キーストアパスワード
-
Service Registry をデプロイするように、以下の設定例を設定します。
apiVersion: registry.apicur.io/v1 kind: ApicurioRegistry metadata: name: example-apicurioregistry-kafkasql spec: configuration: persistence: "kafkasql" kafkasql: bootstrapServers: "my-cluster-kafka-bootstrap.registry-example-kafkasql-tls.svc:9093" security: tls: keystoreSecretName: my-user truststoreSecretName: my-cluster-cluster-ca-cert
プレーンでセキュアでないユースケースとは別の bootstrapServers
アドレスを使用する必要があります。アドレスは TLS 接続をサポートする必要があり、type: tls
フィールドで指定された Kafka リソースにあります。
3.4. SCRAM セキュリティーでの Kafka ストレージの設定
Kafka クラスターの Salted Challenge Response Authentication Mechanism (SCRAM-SHA-512) を使用するように AMQ Streams Operator および Service Registry Operator を設定できます。
前提条件
- OperatorHub またはコマンドラインを使用して Service Registry Operator をインストールする。
- AMQ Streams Operator をインストールする、または Kafka が OpenShift クラスターからアクセスできる。
ここでは、AMQ Streams Operator が利用可能であることを前提としていますが、任意の Kafka デプロイメントを使用できます。この場合、Service Registry Operator が想定する Openshift シークレットを手動で作成する必要があります。
手順
- OpenShift Web コンソールで Installed Operators をクリックし、AMQ Streams Operator の詳細を選択してから、Kafka タブをクリックします。
- Create Kafka をクリックし、Service Registry ストレージの新しい Kafka クラスターをプロビジョニングします。
以下のように、Kafka クラスターの SCRAM-SHA-512 認証を使用するように
authorization
およびtls
フィールドを設定します。apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster namespace: registry-example-kafkasql-scram # Change or remove the explicit namespace spec: kafka: config: offsets.topic.replication.factor: 3 transaction.state.log.replication.factor: 3 transaction.state.log.min.isr: 2 log.message.format.version: '2.7' inter.broker.protocol.version: '2.7' version: 2.7.0 storage: type: ephemeral replicas: 3 listeners: - name: tls port: 9093 type: internal tls: true authentication: type: scram-sha-512 authorization: type: simple entityOperator: topicOperator: {} userOperator: {} zookeeper: storage: type: ephemeral replicas: 3
Service Registry がデータを保存するために使用するデフォルトの Kafka トピック名は
kafkasql-journal
です。このトピックは Service Registry によって自動的に作成されます。適切な環境変数 (デフォルト値) を設定して、この動作またはデフォルトのトピック名を上書きできます。-
REGISTRY_KAFKASQL_TOPIC_AUTO_CREATE=true
-
REGISTRY_KAFKASQL_TOPIC=kafkasql-journal
Kafka トピックを手動で作成しない場合は、次の手順を省略します。
-
Kafka Topic タブをクリックしてから Create Kafka Topic をクリックし、
kafkasql-journal
トピックを作成します。apiVersion: kafka.strimzi.io/v1beta1 kind: KafkaTopic metadata: name: kafkasql-journal labels: strimzi.io/cluster: my-cluster namespace: registry-example-kafkasql-scram spec: partitions: 2 replicas: 1 config: retention.ms: 604800000 segment.bytes: 1073741824
Kafka User リソースを作成し、Service Registry ユーザーの SCRAM 認証および承認を設定します。
metadata
セクションでユーザー名を指定するか、デフォルトのmy-user
を使用できます。apiVersion: kafka.strimzi.io/v1beta1 kind: KafkaUser metadata: name: my-user labels: strimzi.io/cluster: my-cluster namespace: registry-example-kafkasql-scram spec: authentication: type: scram-sha-512 authorization: acls: - operation: All resource: name: '*' patternType: literal type: topic - operation: All resource: name: '*' patternType: literal type: cluster - operation: All resource: name: '*' patternType: literal type: transactionalId - operation: All resource: name: '*' patternType: literal type: group type: simple
注記Service Registry が必要とするトピックおよびリソースに合わせて承認を設定する必要があります。これは、単純な許容例です。
Workloads をクリックしてから Secrets をクリックし、Service Registry が Kafka クラスターに接続するために AMQ Stremas によって作成される 2 つのシークレットを見つけます。
-
my-cluster-cluster-ca-cert
- Kafka クラスターの PKCS12 トラストストアが含まれます。 my-user
- ユーザーのキーストアが含まれます。注記シークレットの名前は、クラスターまたはユーザー名によって異なります。
-
シークレットを手動で作成する場合は、以下のキーと値のペアを含める必要があります。
my-cluster-ca-cert
-
ca.p12
- PKCS12 形式のトラストストア -
ca.password
- トラストストアのパスワード
-
my-user
-
password
- ユーザーパスワード
-
Service Registry をデプロイするように、以下の設定例を設定します。
apiVersion: registry.apicur.io/v1 kind: ApicurioRegistry metadata: name: example-apicurioregistry-kafkasql spec: configuration: persistence: "kafkasql" kafkasql: bootstrapServers: "my-cluster-kafka-bootstrap.registry-example-kafkasql-scram.svc:9093" security: scram: truststoreSecretName: my-cluster-cluster-ca-cert user: my-user passwordSecretName: my-user
プレーンでセキュアでないユースケースとは別の bootstrapServers
アドレスを使用する必要があります。アドレスは TLS 接続をサポートする必要があり、type: tls
フィールドで指定された Kafka リソースにあります。
第4章 PostgreSQL データベースでの Service Registry ストレージのデプロイ
本章では、PostgreSQL データベースで Service Registry データストレージをインストール、設定、および管理する方法を説明します。
4.1. OpenShift OperatorHub からの PostgreSQL データベースのインストール
PostgreSQL データベース Operator がインストールされていない場合は、OperatorHub から OpenShift クラスターに PostgreSQL Operator をインストールできます。OperatorHub は OpenShift Container Platform Web コンソールから使用でき、クラスター管理者が Operator を検出およびインストールするためのインターフェースを提供します。詳細は、OpenShift のドキュメント を参照してください。
前提条件
- クラスター管理者として OpenShift クラスターにアクセスできる。
手順
- OpenShift Container Platform Web コンソールで、クラスター管理者権限を持つアカウントを使用してログインします。
-
PostgreSQL Operator をインストールする OpenShift プロジェクトに切り替えます。たとえば、Project ドロップダウンメニューから、
my-project
を選択します。 - 左側のナビゲーションメニューで、Operators をクリックした後、OperatorHub をクリックします。
-
Filter by keyword テキストボックスに
PostgreSQL
を入力し、環境に適した Operator を見つけます (例: Crunchy PostgreSQL for OpenShift または PostgreSQL Operator by Dev4Ddevs.com ) 。 - Operator に関する情報を読み、Install をクリックして Operator サブスクリプションページを表示します。
サブスクリプション設定を選択します。以下に例を示します。
- Update Channel: stable
- Installation Mode: A specific namespace on the cluster および my-project
- Approval Strategy: Automatic または Manual を選択します。
Install をクリックし、Operator が使用できるようになるまでしばらく待ちます。
重要データベースの作成と管理方法の詳細については、選択したPostgreSQL Operator のドキュメントを読む必要があります。
4.2. OpenShift での PostgreSQL データベースストレージを使用した Service Registry の設定
本セクションでは、PostgreSQL データベース Operator を使用して、OpenShift の Service Registry のストレージを設定する方法を説明します。既存のデータベースに Service Registry をインストールするか、環境に応じて新規データベースを作成することができます。本セクションでは、Dev4Ddevs.com による PostgreSQL Operator を使用する簡単な例を紹介します。
前提条件
- クラスター管理者として OpenShift クラスターにアクセスできる。
- Service Registry がすでにインストールされている。2章OpenShift での Service Registry のインストール を参照してください。
- OpenShift に PostgreSQL Operator がすでにインストールされている。(例: 「OpenShift OperatorHub からの PostgreSQL データベースのインストール」)。
手順
- OpenShift Container Platform Web コンソールで、クラスター管理者権限を持つアカウントを使用してログインします。
-
Service Registry および PostgreSQL Operator がインストールされている OpenShift プロジェクトに切り替えます。たとえば、Project ドロップダウンメニューから、
my-project
を選択します。 - Service Registry ストレージの PostgreSQL データベースを作成します。たとえば、Installed Operators、PostgreSQL Operator by Dev4Ddevs.com の順にクリックした後、Create database をクリックします。
YAML をクリックし、以下のようにデータベース設定を編集します。
-
name
: 値をregistry
に変更します。 -
image
: 値をcentos/postgresql-12-centos7
に変更します。
-
実際の環境に応じて、必要に応じてその他のデータベース設定を編集します。以下に例を示します。
apiVersion: postgresql.dev4devs.com/v1alpha1 kind: Database metadata: name: registry namespace: my-project spec: databaseCpu: 30m databaseCpuLimit: 60m databaseMemoryLimit: 512Mi databaseMemoryRequest: 128Mi databaseName: example databaseNameKeyEnvVar: POSTGRESQL_DATABASE databasePassword: postgres databasePasswordKeyEnvVar: POSTGRESQL_PASSWORD databaseStorageRequest: 1Gi databaseUser: postgres databaseUserKeyEnvVar: POSTGRESQL_USER image: centos/postgresql-12-centos7 size: 1
- Create をクリックし、データベースが作成されるまで待ちます。
- Installed Operators > Red Hat Integration - Service Registry > ApicurioRegistry > Create ApicurioRegistry とクリックします。
以下のカスタムリソース定義に貼り付け、データベース
url
およびクレデンシャルの値を編集して環境と一致するようにします。apiVersion: registry.apicur.io/v1 kind: ApicurioRegistry metadata: name: example-apicurioregistry-sql spec: configuration: persistence: 'sql' sql: dataSource: url: 'jdbc:postgresql://<service name>.<namespace>.svc:5432/<database name>' # e.g. url: 'jdbc:postgresql://acid-minimal-cluster.my-project.svc:5432/registry' userName: 'postgres' password: '<password>' # Optional
- Create をクリックし、OpenShift で Service Registry ルートが作成されるまで待機します。
Networking > Route をクリックして、Service Registry Web コンソールの新規ルートにアクセスします。以下に例を示します。
http://example-apicurioregistry-sql.my-project.my-domain-name.com/
4.3. Service Registry PostgreSQL ストレージのバックアップ
PostgreSQL データベースでストレージを使用する場合は、Service Registry に保存されているデータを定期的にバックアップする必要があります。
SQL Dumpは、どのような PostgreSQL インストールでも動作するシンプルな手順です。これは pg_dump ユーティリティーを使用して、ダンプ時と同じ状態でデータベースを再作成するために使用できる SQL コマンドでファイルを生成します。
pg_dump
は通常の PostgreSQL クライアントアプリケーションで、データベースにアクセスできる任意のリモートホストから実行することができます。他のクライアントと同様に、実行できる操作はユーザーの権限によって制限されます。
手順
pg_dump
コマンドを使用して、出力をファイルにリダイレクトします。$ pg_dump dbname > dumpfile
pg_dump
が-h host
および-p port
オプションを使用して、接続するデータベースサーバーを指定できます。gzip などの圧縮ツールを使用して大きなダンプファイルを減らすことができます。以下に例を示します。
$ pg_dump dbname | gzip > filename.gz
その他のリソース
- クライアント認証の詳細は、PostgreSQL のドキュメント を参照してください。
- レジストリーコンテンツのインポートおよびエクスポートに関する詳細は、「Managing Apicurio Registry content using the REST API」を参照してください。
4.4. Service Registry PostgreSQL ストレージの復元
psql
ユーティリティーを使用して、pg_dump
で作成した SQL ダンプファイルを復元できます。
前提条件
-
pg_dump
を使用して、PostgreSQL データベースをすでにバックアップしている。「Service Registry PostgreSQL ストレージのバックアップ」 を参照してください。 - オブジェクトを所有するユーザー、またはダンプされたデータベースのオブジェクトに対する権限があるユーザーがすべて存在している。
手順
以下のコマンドを入力して、データベースを作成します。
$ createdb -T template0 dbname
以下のコマンドを入力して SQL ダンプを復元します。
$ psql dbname < dumpfile
- クエリーオプティマイザーが便利な統計を持つように、各データベースで ANALYZE を実行します。
第5章 Service Registry デプロイメントのセキュリティー保護
本章では、OpenShift での Service Registry デプロイメントのセキュリティー設定について説明します。
Service Registry は、OpenID Connect (OIDC) または HTTP Basic に基づいて Red Hat Single Sign-On を使用して認証および承認を行います。Red Hat Single Sign-On Operator を使用して必要な設定を自動的に設定するか、Red Hat Single Sign-On および Service Registry で手動で設定する必要があります。
Service Registry は、Red Hat Single Sign-On を使用して Service Registry Web コンソールおよびコア REST API のロールベースの認証および承認を提供します。Service Registry は、アーティファクト作成者のみが書き込みアクセスを持つスキーマまたは API レベルでコンテンツベースの承認も提供します。OpenShift クラスターの内部または外部から Service Registry への HTTPS 接続を設定することもできます。
その他のリソース
Java クライアントアプリケーションのセキュリティー設定の詳細は、以下を参照してください。
5.1. Red Hat Single Sign-On Operator を使用した Service Registry のセキュリティー保護
次の手順は、Red Hat Single Sign-On によって保護されるように Service Registry REST API と Web コンソールを設定する方法を示しています。Red Hat Single Sign-On Operator はテクノロジープレビューとして利用できます。
テクノロジープレビューの機能は、Red Hat の本番環境のサービスレベルアグリーメント (SLA) ではサポートされず、機能的に完全ではないことがあります。Red Hat は、本番環境でのテクノロジープレビュー機能の実装は推奨しません。
テクノロジープレビューの機能は、最新の技術をいち早く提供して、開発段階で機能のテストやフィードバックの収集を可能にするために提供されます。サポート範囲の詳細は、「テクノロジプレビュー機能のサポート範囲」を参照してください。
Service Registry は以下のユーザーロールをサポートします。
表5.1 Service Registry ユーザーロール
名前 | 機能 |
---|---|
| 完全なアクセス。制限はありません。 |
|
アーティファクトを作成し、アーティファクトルールを設定します。グローバルルールの変更、インポート/エクスポートの実行、 |
|
表示と検索のみ。アーテファクトやルールの変更、インポート/エクスポートの実行、 |
Web コンソールを読み取り専用モードを設定するために使用できる ApicurioRegistry
CRD に、関連する設定オプションがあります。ただし、この設定は REST API には影響しません。
前提条件
- Service Registry Operator がインストールされている。
- Red Hat Single Sign-On Operator をインストールするか、または OpenShift クラスターからアクセスできる Red Hat Single Sign-On が必要です。
この手順の設定例は、開発およびテストのみを目的としています。手順を単純にするために、実稼働環境で推奨される HTTPS やその他のセキュリティーは使用しません。詳細は、Red Hat Single Sign-On のドキュメントを参照してください。
手順
- OpenShift Web コンソールで、Installed Operators および Red Hat Single Sign-On Operator をクリックし、Keycloak タブをクリックします。
Create Keycloak をクリックし、Service Registry デプロイメントのセキュリティーを保護するために、新しい Red Hat Single Sign-On インスタンスをプロビジョニングします。デフォルト値を使用できます。以下に例を示します。
apiVersion: keycloak.org/v1alpha1 kind: Keycloak metadata: name: example-keycloak labels: app: sso spec: instances: 1 externalAccess: enabled: True podDisruptionBudget: enabled: True
- インスタンスが作成されるまで待ち、Networking をクリックした後に Routes をクリックし、keycloak インスタンスの新規ルートにアクセスします。
-
Location URL をクリックし、後で Service Registry のデプロイ時に使用する、表示された
../auth
URL 値をコピーします。 Installed Operators および Red Hat Single Sign-On Operator をクリックし、Keycloak Realm タブをクリックした後、Create Keycloak Realm をクリックして
registry
のサンプルレルムを作成します。apiVersion: keycloak.org/v1alpha1 kind: KeycloakRealm metadata: name: registry-keycloakrealm spec: instanceSelector: matchLabels: app: sso realm: displayName: Registry enabled: true id: registry realm: registry sslRequired: none roles: realm: - name: sr-admin - name: sr-developer - name: sr-readonly clients: - clientId: registry-client-ui implicitFlowEnabled: true redirectUris: - '*' standardFlowEnabled: true webOrigins: - '*' publicClient: true - clientId: registry-client-api implicitFlowEnabled: true redirectUris: - '*' standardFlowEnabled: true webOrigins: - '*' publicClient: true users: - credentials: - temporary: false type: password value: changeme enabled: true realmRoles: - sr-admin username: registry-admin - credentials: - temporary: false type: password value: changeme enabled: true realmRoles: - sr-developer username: registry-developer - credentials: - temporary: false type: password value: changeme enabled: true realmRoles: - sr-readonly username: registry-user
重要実稼働環境にデプロイする場合は、ご使用の環境に適した値でこの
KeycloakRealm
リソースをカスタマイズする必要があります。Red Hat Single Sign-On Web コンソールを使用してレルムを作成および管理することもできます。クラスターに有効な HTTPS 証明書が設定されていない場合は、以下の HTTP
Service
およびIngress
リソースを一時的な回避策として作成できます。Networking をクリックしてから Services をクリックし、以下の例を使用して Create Service をクリックします。
apiVersion: v1 kind: Service metadata: name: keycloak-http labels: app: keycloak spec: ports: - name: keycloak-http protocol: TCP port: 8080 targetPort: 8080 selector: app: keycloak component: keycloak type: ClusterIP sessionAffinity: None status: loadBalancer: {}
Networking をクリックしてから Ingresses をクリックし、以下の例を使用して Create Ingress をクリックします。
apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: keycloak-http labels: app: keycloak spec: rules: - host: keycloak-http.local http: paths: - path: / pathType: ImplementationSpecific backend: serviceName: keycloak-http servicePort: 8080
host
の値を変更して、Service Registry ユーザーがアクセスできるルートを作成し、Red Hat Single Sign-On Operator によって作成された HTTPS ルートの代わりにこれを使用します。
Service Registry Operator をクリックし、以下の例のように ApicurioRegistry タブをクリックして Create ApicurioRegistry をクリックしますが、
keycloak
セクションの値を置き換えます。apiVersion: registry.apicur.io/v1 kind: ApicurioRegistry metadata: name: example-apicurioregistry-kafkasql-keycloak spec: configuration: security: keycloak: url: "http://keycloak-http-<namespace>.apps.<cluster host>/auth" # ^ Required # Keycloak server URL, must end with `/auth`. # Use an HTTP URL in development. realm: "registry" # apiClientId: "registry-client-api" # ^ Optional (default value) # uiClientId: "registry-client-ui" # ^ Optional (default value) persistence: 'kafkasql' kafkasql: bootstrapServers: '<my-cluster>-kafka-bootstrap.<namespace>.svc:9092'
5.2. Red Hat Single Sign-On での Service Registry の認証および承認の設定
本セクションでは、Red Hat Single Sign-On を使用して Service Registry の認証および承認オプションを手作業で設定する方法を説明します。
また、これらの設定を自動的に設定する方法の詳細は、「Red Hat Single Sign-On Operator を使用した Service Registry のセキュリティー保護」 を参照してください。
OpenID Connect (OIDC) 使用して OAuth をベースとした Red Hat Single Sign-On を使用して、Service Registry Web コンソールおよびコア REST API の認証を有効にすることができます。同じ Red Hat Single Sign-On レルムとユーザーは OpenID Connect を使用して Service Registry Web コンソールとコアREST API で連携されるため、必要なクレデンシャルは 1 セットのみです。
Service Registry は、デフォルトの admin、write、および read-only ユーザーロールのロールベースの承認を提供します。Service Registry は、スキーマまたは API レベルでコンテンツベースの承認を提供し、レジストリーアーティファクトの作成者のみが更新または削除できます。Service Registry の認証および承認設定は、デフォルトでは無効になっています。
前提条件
- Red Hat Single Sign-On がインストールされ、実行中である。詳細は、Red Hat Single Sign-On のユーザードキュメント を参照してください。
- Service Registry がインストールされ、稼働中である。
手順
-
Red Hat Single Sign-On 管理コンソールで、Service Registry の Red Hat Single Sign-On レルムを作成します。デフォルトでは、Service Registry はレルム名
registry
を想定します。レルムの作成に関する詳細は、Red Hat Single Sign-On のユーザードキュメント を参照してください。 Service Registry API 向けに Red Hat Single Sign-On クライアントを作成します。デフォルトでは、Service Registry は次の設定を想定しています。
-
Client ID:
registry-api
-
Client Protocol:
openid-connect
Access Type:
bearer-only
他のクライアント設定にはデフォルト値を使用できます。
注記Red Hat Single Sign-On サービスアカウントを使用している場合は、Access Type は
bearer-only
ではなくconfidential
である必要があります。
-
Client ID:
Service Registry Web コンソール向けに Red Hat Single Sign-On クライアントを作成します。デフォルトでは、Service Registry は次の設定を想定しています。
-
Client ID:
apicurio-registry
-
Client Protocol:
openid-connect
-
Access Type:
public
-
Valid Redirect URLs:
http://my-registry-url:8080/*
Web Origins:
+
他のクライアント設定にはデフォルト値を使用できます。
-
Client ID:
OpenShift での Service Registry デプロイメントで、以下の Service Registry 環境変数を設定し、Red Hat Single Sign-On を使用して認証を設定します。
表5.2 Service Registry 認証設定
環境変数 説明 型 デフォルト AUTH_ENABLED
true
に設定すると、従う環境変数が必要です。String
false
KEYCLOAK_URL
使用する Red Hat Single Sign-On 認証サーバーの URL。
/auth
で終わる必要があります。String
なし
KEYCLOAK_REALM
認証に使用する Red Hat Single Sign-On レルム。
String
registry
KEYCLOAK_API_CLIENT_ID
Service Registry REST API のクライアント ID。
String
registry-api
KEYCLOAK_UI_CLIENT_ID
Service Registry Web コンソールのクライアント ID。
String
apicurio-registry
ヒントOpenShift に環境変数を設定する例については、「OpenShift での Service Registry ヘルスチェックの設定」 を参照してください。
Red Hat Single Sign-On で Service Registry ユーザーロールを有効にするため、以下のオプションを
true
に設定します。表5.3 Service Registry ユーザーロールの設定
環境変数 Java システムプロパティー 型 デフォルト値 ROLES_ENABLED
registry.auth.roles.enabled
Boolean
false
Service Registry のユーザーロールが有効になっている場合は、Red Hat Single Sign-On レルムで Service Registry ユーザーを以下のデフォルトユーザーロールの 1 つ以上に割り当てる必要があります。
表5.4 レジストリーの認証および承認のデフォルトユーザーロール
ロール アーティファクトの読み取り アーティファクトの書き込み グローバルルール 概要 sr-admin
可能
可能
可能
すべての作成、読み取り、更新、および削除操作へのフルアクセス。
sr-developer
可能
可能
不可能
グローバルルールの設定を除く、作成、読み取り、更新、および削除操作へのアクセス。このロールはアーティファクトルールを設定できます。
sr-readonly
可能
不可能
不可能
読み取りおよび検索操作のみへのアクセス。このロールはルールを設定できません。
以下を
true
に設定し、Service Registry のスキーマおよび API アーティファクトへの更新に対する所有者のみの承認を有効にします。表5.5 所有者のみの承認の設定
環境変数 Java システムプロパティー 型 デフォルト値 REGISTRY_AUTH_OWNER_ONLY_AUTHORIZATION
registry.auth.owner-only-authorization
Boolean
false
その他のリソース
- オープンソースのアプリケーションおよび Keycloak レルムについては、「Docker Compose-based example of using Keycloak with Apicurio Registry」を参照してください。
- 実稼働環境で Red Hat Single Sign-On を使用する方法の詳細は、Red Hat Single Sign-On のドキュメントを参照してください。
- カスタムセキュリティーの設定に関する詳細は、Quarkus Open ID Connect のドキュメントを参照してください。
5.3. OpenShift クラスター内から Service Registry への HTTPS 接続の設定
以下の手順では、OpenShift クラスター内から HTTPS 接続のポートを公開するように Service Registry デプロイメントを設定する方法を説明します。
このような接続は、クラスター外部で直接利用できません。ルーティングはホスト名に基づいており、HTTPS 接続の場合はエンコードされます。そのため、エッジターミネーションまたはその他の設定は必要です。「OpenShift クラスター外から Service Registry への HTTPS 接続の設定」 を参照してください。
前提条件
- Service Registry Operator がインストールされている。
手順
自己署名証明書を使用して
keystore
を生成します。独自の証明書を使用している場合は、この手順を省略できます。keytool -genkey -trustcacerts -keyalg RSA -keystore registry-keystore.jks -storepass password
キーストアおよびキーストアのパスワードを保持する新しいシークレットを作成します。
- OpenShift Web コンソールの左側のナビゲーションメニューで、Workloads > Secrets > Create Key/Value Secret とクリックします。
以下の値を使用します。
Name:registry-keystore
Key 1:keystore.jks
Value 1: registry-keystore.jks (アップロードしたファイル)
Key 2:password
Value 2: password注記java.io.IOException: Invalid keystore format
が発生した場合、バイナリーファイルのアップロードが正常に行われていません。代わりに、cat registry-keystore.jks | base64 -w0 > data.txt
を使用してファイルを base64 文字列としてエンコードし、Secret リソースを yaml として編集して、エンコードされたファイルを手動で追加します。
Service Registry インスタンスの Deployment リソースを編集します。Service Registry Operator の status フィールドで正しい名前を見つけることができます。
キーストアシークレットをボリュームとして追加します。
template: spec: volumes: - name: registry-keystore-secret-volume secret: secretName: registry-keystore
ボリュームマウントを追加します。
volumeMounts: - name: registry-keystore-secret-volume mountPath: /etc/registry-keystore readOnly: true
JAVA_OPTIONS
およびKEYSTORE_PASSWORD
環境変数を追加します。- name: KEYSTORE_PASSWORD valueFrom: secretKeyRef: name: registry-keystore key: password - name: JAVA_OPTIONS value: >- -Dquarkus.http.ssl.certificate.key-store-file=/etc/registry-keystore/keystore.jks -Dquarkus.http.ssl.certificate.key-store-file-type=jks -Dquarkus.http.ssl.certificate.key-store-password=$(KEYSTORE_PASSWORD)
注記順序は、文字列の補間を使用する場合に重要です。
HTTPS ポートを有効にします。
ports: - containerPort: 8080 protocol: TCP - containerPort: 8443 protocol: TCP
Service Registry インスタンスの Service リソースを編集します。Service Registry Operator の status フィールドで正しい名前を見つけることができます。
ports: - name: http protocol: TCP port: 8080 targetPort: 8080 - name: https protocol: TCP port: 8443 targetPort: 8443
接続が機能していることを確認します。
SSH を使用してクラスターの Pod に接続します (Service Registry Pod を使用できます)。
oc rsh -n default example-apicurioregistry-deployment-vx28s-4-lmtqb
Serviceリソースから Service Registry Pod のクラスター IP を見つけます (Web コンソールの Location 列を参照)。その後、テスト要求を実行します (自己署名証明書を使用するので、セキュアでないフラグが必要になります)。
curl -k https://172.30.209.198:8443/health [...]
5.4. OpenShift クラスター外から Service Registry への HTTPS 接続の設定
以下の手順では、OpenShift クラスター外からの接続に対して HTTPS エッジターミネーションを使用したルートを公開するために Service Registry デプロイメントを設定する方法を説明します。
前提条件
- Service Registry Operator がインストールされている。
- セキュアなルートを作成するための OpenShift ドキュメント を読む。
手順
Service Registry Operator によって作成される HTTP ルートの他に、2 つ目の Route を追加します。以下の例を参照してください。
kind: Route apiVersion: route.openshift.io/v1 metadata: [...] labels: app: example-apicurioregistry [...] spec: host: example-apicurioregistry-default.apps.example.com to: kind: Service name: example-apicurioregistry-service-9whd7 weight: 100 port: targetPort: 8080 tls: termination: edge insecureEdgeTerminationPolicy: Redirect wildcardPolicy: None
注記insecureEdgeTerminationPolicy: Redirect
設定プロパティーが設定されていることを確認してください。証明書を指定しない場合、OpenShift はデフォルトを使用します。または、以下のコマンドを使用してカスタムの自己署名証明書を生成することもできます。
openssl genrsa 2048 > host.key && openssl req -new -x509 -nodes -sha256 -days 365 -key host.key -out host.cert
次に、OpenShift CLI を使用してルートを作成します。
oc create route edge \ --service=example-apicurioregistry-service-9whd7 \ --cert=host.cert --key=host.key \ --hostname=example-apicurioregistry-default.apps.example.com \ --insecure-policy=Redirect \ -n default
第6章 Service Registry デプロイメントの設定および管理
本章では、OpenShift での Service Registry デプロイメントのオプションの設定および管理方法について説明します。
6.1. OpenShift での Service Registry ヘルスチェックの設定
liveness および readiness プローブのオプションの環境変数を設定して、OpenShift の Service Registry サーバーの健全性を監視できます。
- アプリケーションが進行可能な場合は liveness プローブ のテスト。アプリケーションが進行不可能な場合、OpenShift は障害のある Pod を自動的に再起動します。
- アプリケーションが要求を処理する準備ができている場合はreadiness プローブ のテスト。アプリケーションが準備できていない場合、リクエストに圧倒されてしまい、プローブが失敗した期間は OpenShiftがリクエストの送信を停止します。他の Pod が OK の場合は、引き続き要求を受け取ります。
liveness および readiness 環境変数のデフォルト値はほとんどの場合を想定して設計されており、環境で必要とされる場合にのみ変更する必要があります。デフォルトへの変更は、ハードウェア、ネットワーク、および保存されたデータ量によって異なります。これらの値は、不要なオーバーヘッドを回避するために、できるだけ低く抑える必要があります。
前提条件
- クラスター管理者として OpenShift クラスターにアクセスできる。
- OpenShift に Service Registry がインストールされている。
- AMQ Streams または PostgreSQL で選択した Service Registry ストレージがインストールされ、設定されている。
手順
- OpenShift Container Platform Web コンソールで、クラスター管理者権限を持つアカウントを使用してログインします。
- Installed Operators > Red Hat Integration - Service Registry をクリックします。
- ApicurioRegistry タブで、example-apicurioregistry などのデプロイメントの Operator カスタムリソースをクリックします。
-
メインの概要ページで、Deployment Name セクションと Service Registry デプロイメントの対応する
DeploymentConfig
名を見つけます (例: example-apicurioregistry)。 -
左側のナビゲーションメニューで Workloads > Deployment Configs をクリックし、
DeploymentConfig
名を選択します。 Environment タブをクリックして、Single values env セクションに環境変数を入力します。以下に例を示します。
-
NAME:
LIVENESS_STATUS_RESET
-
VALUE:
350
-
NAME:
下部にある Save をクリックします。
代わりに、OpenShift
oc
コマンドを使用して、これらの手順を実行することもできます。詳細は、OpenShift CLI のドキュメント を参照してください。
6.2. Service Registry ヘルスチェックの環境変数
このセクションでは、OpenShift の Service Registry ヘルスチェックに使用できる環境変数について説明します。これには、OpenShift 上の Service Registry サーバーの健全性を監視する liveness および readiness プローブが含まれます。手順の例は、「OpenShift での Service Registry ヘルスチェックの設定」 を参照してください。
以下の環境変数は参考としてのみ提供されます。デフォルト値はほとんどの場合を想定して設計されており、環境に必要な場合のみ変更する必要があります。デフォルトへの変更は、ハードウェア、ネットワーク、および保存されたデータ量によって異なります。これらの値は、不要なオーバーヘッドを回避するために、できるだけ低く抑える必要があります。
liveness 環境変数
表6.1 Service Registry liveness プローブの環境変数
名前 | 説明 | 型 | デフォルト |
---|---|---|---|
| liveness プローブが失敗するまでに発生する可能性のある liveness の問題またはエラーの数。 | Integer |
|
| しきい値となる数のエラーが発生する期間。たとえば、この値が 60 でしきい値が 1 の場合、1 分間に 2 件のエラーが発生するとチェックが失敗します。 | Seconds |
|
| liveness プローブが OK ステータスにリセットされるために、エラーなしで経過する必要のある秒数。 | Seconds |
|
| 無視された liveness 例外のコンマ区切りリスト。 | String |
|
OpenShift は liveness チェックに失敗した Pod を自動的に再起動するため、liveness 設定は readiness 設定とは異なり、OpenShift 上の Service Registry の動作に直接影響を与えません。
readiness 環境変数
表6.2 Service Registry readiness プローブの環境変数
名前 | 説明 | 型 | デフォルト |
---|---|---|---|
| readiness プローブが失敗するまでに発生する可能性のある readiness の問題またはエラーの数。 | Integer |
|
| しきい値となる数のエラーが発生する期間。たとえば、この値が 60 でしきい値が 1 の場合、1 分間に 2 件のエラーが発生するとチェックが失敗します。 | Seconds |
|
| liveness プローブが OK ステータスにリセットされるために、エラーなしで経過する必要のある秒数。ここでは、Pod が通常の動作に戻るまでの準備ができていない状態の期間を意味します。 | Seconds |
|
| readiness は 2 つの操作のタイムアウトを追跡します。
これらの操作に設定されたタイムアウトよりも時間がかかった場合、これは readiness 問題またはエラーとしてカウントされます。この値は、両方の操作のタイムアウトを制御します。 | Seconds |
|
6.3. Service Registry 環境変数の管理
Service Registry Operator は最も一般的な Service Registry 設定を管理しますが、手動で調整できるオプションがあります。Service Registry Deployment
リソースに環境変数を設定することで、これらを更新できます。特定の設定オプションが ApicurioRegistry
CR で利用できない場合、環境変数を使用して調整できます。
手順
- OpenShift Web コンソール
- Installed Operators タブを選択してから、Red Hat Integration - Service Registry Operator を選択します。
-
ApicurioRegistry タブで、Service Registry デプロイメントの
ApicurioRegistry
CR をクリックします。 -
メインの概要ページで、Service Registry インスタンスをデプロイするために Operator によって管理される
Deployment
の名前が含まれる managedResources セクションを表示します。 -
左側のメニューの Workloads > Deployments に
Deployment
があることを確認します。 -
正しい名前で
Deployment
を選択し、Environment タブを選択します。 - 環境変数を Single values (env) セクションに追加または変更できます。
- 下部にある Save をクリックします。
- OpenShift CLI
- Service Registry がインストールされているプロジェクトを選択します。
-
oc get apicurioregistry
を実行してApicurioRegistry
CR のリストを取得します。 -
設定する Service Registry インスタンスを表す CR で
oc describe
を実行します。 - status セクションで managedResources を確認します。
-
Deployment
を見つけ、oc edit
を入力します。 -
spec.template.spec.containers[0].env
セクションの環境変数を追加または変更します。
6.4. Service Registry Web コンソールの設定
デプロイメント環境専用の Service Registry Web コンソールを設定したり、その動作をカスタマイズしたりすることができます。本セクションでは、Service Registry Web コンソールにオプションの環境変数を設定する方法を説明します。
前提条件
- Service Registry がすでにインストールされている。
Web コンソールのデプロイメント環境の設定
ユーザーがブラウザーで Service Registry Web コンソールに移動すると、一部の初期設定が読み込まれます。以下の 2 つの重要な設定プロパティーがあります。
- バックエンド Service Registry REST API の URL
- フロントエンド Service Registry Web コンソールの URL
通常、Service Registry はこれらの設定を自動的に検出して生成しますが、、一部のデプロイメント環境ではこの自動検出が失敗する場合があります。その場合には、環境のこれらの URL を明示的に設定するように環境変数を設定できます。
手順
以下の環境変数を設定し、デフォルトの URL を上書きします。
-
REGISTRY_UI_CONFIG_APIURL
: バックエンド Service Registry REST API の URL を設定します。例:https://registry.my-domain.com/apis/registry
-
REGISTRY_UI_CONFIG_UIURL
: フロントエンド Service Registry Web コンソールの URL を設定します。例:https://registry.my-domain.com/ui
読み取り専用モードでのコンソールの設定
オプション機能として、Service Registry の Web コンソールを読み取り専用モードに設定することができます。このモードでは、Service Registry Webコンソールでユーザーが登録されたアーティファクトを変更できる機能がすべて無効になります。たとえば、これには以下が含まれます。
- アーティファクトの作成
- アーティファクトの新規バージョンのアップロード
- アーティファクトのメタデータの更新
- アーティファクトの削除
手順
以下の環境変数を設定して、Service Registry の Web コンソールを読み取り専用モードにします。
-
REGISTRY_UI_FEATURES_READONLY
: 読み取り専用モードを有効にするにはtrue
に設定します。デフォルトはfalse
です。
6.5. Service Registry ロギングの設定
実行時に Service Registry のログを設定できます。Service Registry は、詳細なロギングのために特定のロガーのログレベルを設定する REST エンドポイントを提供します。本セクションでは、Service Registry /admin
REST API を使用して、実行時に Service Registry ログレベルを表示および設定する方法を説明します。
前提条件
-
Service Registry インスタンスにアクセスするための URL を取得するか、OpenShift にデプロイした場合に Service Registry ルートを取得します。この簡単な例では、
localhost:8080
の URL を使用します。
手順
この
curl
コマンドを使用して、ロガーio.apicurio.registry.storage
の現在のログレベルを取得します。$ curl -i localhost:8080/apis/registry/v2/admin/loggers/io.apicurio.registry.storage HTTP/1.1 200 OK [...] Content-Type: application/json {"name":"io.apicurio.registry.storage","level":"INFO"}
この
curl
コマンドを使用して、ロガーio.apicurio.registry.storage
のログレベルをDEBUG
に変更します。$ curl -X PUT -i -H "Content-Type: application/json" --data '{"level":"DEBUG"}' localhost:8080/apis/registry/v2/admin/loggers/io.apicurio.registry.storage HTTP/1.1 200 OK [...] Content-Type: application/json {"name":"io.apicurio.registry.storage","level":"DEBUG"}
この
curl
コマンドを使用して、ロガーio.apicurio.registry.storage
のログレベルをデフォルト値に戻します。$ curl -X DELETE -i localhost:8080/apis/registry/v2/admin/loggers/io.apicurio.registry.storage HTTP/1.1 200 OK [...] Content-Type: application/json {"name":"io.apicurio.registry.storage","level":"INFO"}
6.6. Service Registry イベントソーシングの設定
Service Registry は、変更がレジストリーに加えられたときにイベントを送信するように設定できます。たとえば、Service Registry は、スキーマおよび API アーティファクトが作成、更新、削除された場合などにイベントをトリガーできます。このように、イベントをアプリケーションおよびサードパーティーのインテグレーションに送信するように Service Registry を設定できます。
イベントの転送に使用できるさまざまなプロトコルがあります。現在実装されているプロトコルは HTTP および Apache Kafka です。ただし、プロトコルに関係なく、イベントは CNCF CloudEvents 仕様を使用して送信されます。
すべてのイベントタイプは io.apicurio.registry.events.dto.RegistryEventType
で定義されます。たとえば、イベントタイプには次のものがあります。
-
io.apicurio.registry.artifact-created
-
io.apicurio.registry.artifact-updated
-
io.apicurio.registry.artifact-rule-created
-
io.apicurio.registry.global-rule-created
Java システムプロパティーまたは同等の環境変数を使用して、Service Registry でクラウドイベントを設定できます。
前提条件
- Service Registry クラウドイベントの送信先となるアプリケーションが必要です。たとえば、カスタムアプリケーションやサードパーティーアプリケーションなどです。
HTTP を使用した Service Registry イベントソーシングの設定
本セクションの例は、http://my-app-host:8888/events
で実行されているカスタムアプリケーションを示しています。
手順
HTTP プロトコルを使用する場合は、以下のようにイベントをアプリケーションに送信するように Service Registry を設定します。
-
registry.events.sink.my-custom-consumer=http://my-app-host:8888/events
-
必要に応じて、複数のイベントコンシューマーを以下のように設定できます。
-
registry.events.sink.my-custom-consumer=http://my-app-host:8888/events
-
registry.events.sink.other-consumer=http://my-consumer.com/events
-
Apache Kafka を使用した Service Registry イベントソーシングの設定
このセクションの例では、my-kafka-host:9092
で稼働している my-registry-events
という名前の Kafka トピックを示しています。
手順
Kafka プロトコルを使用する場合、以下のように Kafka トピックを設定します。
-
registry.events.kafka.topic=my-registry-events
-
KAFKA_BOOTSTRAP_SERVERS
環境変数を使用して Kafka プロデューサーを設定できます。KAFKA_BOOTSTRAP_SERVERS=my-kafka-host:9092
または、
registry.events.kafka.config.bootstrap.servers=my-kafka-host:9092
のように、registry.events.kafka.config
プレフィックスを使用して kafka プロデューサーのプロパティーを設定することもできます。
必要に応じて、イベントの生成に使用する Kafka トピックパーティションを設定することもできます。
-
registry.events.kafka.topic-partition=1
-
その他のリソース
- 詳細は、CNCF CloudEvents 仕様を参照してください。
第7章 Service Registry Operator の設定リファレンス
本章では、Service Registry Operator をデプロイするように Service Registry を設定するために使用されるカスタムリソースの詳細情報を提供します。
7.1. Service Registry カスタムリソース
Service Registry Operator は、OpenShift 上の Service Registry の単一デプロイメントを表す ApicurioRegistry
カスタムリソース (CR) を定義します。
これらのリソースオブジェクトはユーザーによって作成および維持され、Service Registry のデプロイおよび設定方法を Service Registry Operator に指示します。
ApicurioRegistry CR の例
次のコマンドは、ApicurioRegistry
リソースを表示します。
oc get apicurioregistry oc edit apicurioregistry example-apicurioregistry
apiVersion: registry.apicur.io/v1 kind: ApicurioRegistry metadata: name: example-apicurioregistry namespace: demo-kafka # ... spec: configuration: persistence: kafkasql kafkasql: bootstrapServers: 'my-cluster-kafka-bootstrap.demo-kafka.svc:9092' deployment: host: >- example-apicurioregistry.demo-kafka.example.com status: conditions: - lastTransitionTime: "2021-05-03T10:47:11Z" message: "" reason: Reconciled status: "True" type: Ready info: host: example-apicurioregistry.demo-kafka.example.com managedResources: - kind: Deployment name: example-apicurioregistry-deployment namespace: demo-kafka - kind: Service name: example-apicurioregistry-service namespace: demo-kafka - kind: Ingress name: example-apicurioregistry-ingress namespace: demo-kafka
デフォルトで、Service Registry Operator は独自のプロジェクト namespace のみを監視します。そのため、Operator を手動でデプロイする場合、同じ namespace に ApicurioRegistry
CR を作成する必要があります。この動作を変更するには、operator Deployment
リソースの WATCH_NAMESPACE
環境変数を更新します。
7.2. Service Registry CR 仕様
spec
は、Operator が達成するために必要な状態または設定を指定するために使用される ApicurioRegistry
CR の一部です。
ApicurioRegistry CR 仕様コンテンツ
以下のブロック例には、可能な spec
設定オプションの完全なツリーが含まれます。フィールドによっては、必須ではないものや、同時に定義してはいけないものもあります。
spec: configuration: persistence: <string> sql: dataSource: url: <string> userName: <string> password: <string> kafkasql: bootstrapServers: <string> security: tls: truststoreSecretName: <string> keystoreSecretName: <string> scram: mechanism: <string> truststoreSecretName: <string> user: <string> passwordSecretName: <string> ui: readOnly: <string> logLevel: <string> security: keycloak: url: <string> realm: <string> apiClientId: <string> uiClientId: <string> deployment: replicas: <int32> host: <string> affinity: <k8s.io/api/core/v1 Affinity struct> tolerations: <k8s.io/api/core/v1 []Toleration slice>
以下の表は、各設定オプションについて説明しています。
表7.1 ApicurioRegistry CR 仕様設定オプション
設定オプション | 型 | デフォルト値 | 説明 |
---|---|---|---|
| - | - | Service Registry アプリケーションの設定セクション |
| string | 必須 |
ストレージバックエンド。 |
| - | - | SQL ストレージバックエンドの設定 |
| - | - | SQL ストレージバックエンドのデータベース接続設定 |
| string | 必須 | データベース接続 URL 文字列 |
| string | 必須 | データベースコネクションユーザー |
| string | 空 | データベース接続パスワード |
| - | - | Kafka ストレージバックエンドの設定 |
| string | 必須 | Streams ストレージバックエンドの Kafka ブートストラップサーバー URL。 |
| - | - | Kafka ストレージバックエンドの TLS 認証を設定するセクション。 |
| string | 必須 | Kafka の TLS トラストストアが含まれるシークレットの名前 |
| string | 必須 | ユーザー TLS キーストアを含むシークレットの名前 |
| string | 必須 | Kafka の TLS トラストストアが含まれるシークレットの名前 |
| string | 必須 | SCRAM ユーザー名 |
| string | 必須 | SCRAM ユーザーパスワードが含まれるシークレットの名前 |
| string |
| SASL メカニズム |
| - | - | Service Registry Web コンソール設定 |
| string |
| Service Registry Web コンソールを読み取り専用モードに設定します。 |
| string |
|
Service Registry のログレベル。 |
| - | - | Service Registry Web コンソールおよび REST API セキュリティー設定 |
| - | - | Keycloak を使用した Web コンソールおよび REST API セキュリティー設定 |
| string | 必須 |
Keycloak URL、末尾を |
| string | 必須 | Keycloak レルム |
| string |
| REST API の Keycloak クライアント |
| string |
| Web コンソールの Keycloak クライアント |
| - | - | Service Registry デプロイメント設定のセクション |
| 正の整数 |
| デプロイする Service Registry Pod 数 |
| string | 自動生成 | Service Registry コンソールおよび API が利用できるホスト/URL。可能な場合は、Service Registry Operator はクラスタールーターの設定に基づいて正しい値を判別しようとします。値は一度だけ自動生成されるため、ユーザーは後で上書きすることができます。 |
| k8s.io/api/core/v1 Affinity struct | 空 | Service Registry デプロイメントのアフィニティー設定 |
| k8s.io/api/core/v1 []Toleration slice | 空 | Service Registry のデプロイメント許容の設定 |
オプションが 必須 とされている場合は、有効になっている他の設定オプションの条件である可能性があります。空の値は受け入れられる可能性がありますが、Operator は指定されたアクションを実行しません。
7.3. Service Registry CR のステータス
status
は、現在のデプロイメントおよびアプリケーションの状態の説明が含まれる Service Registry Operator によって管理される CR のセクションです。
ApicurioRegistry CR ステータスのコンテンツ
status
セクションには、以下のフィールドが含まれます。
status: info: host: <string> conditions: <list of:> - type: <string> status: <string, one of: True, False, Unknown> reason: <string> message: <string> lastTransitionTime: <string, RFC-3339 timestamp> managedResources: <list of:> - kind: <string> namespace: <string> name: <string>
表7.2 ApicurioRegistry CR status フィールド
status フィールド | 型 | 説明 |
---|---|---|
| - | デプロイされた Service Registry に関する情報が含まれるセクション。 |
| string | Service Registry UI および REST API にアクセスできる URL。 |
| - | Service Registry のステータス、またはそのデプロイメントに関連した operator のステータスを報告する条件の一覧。 |
| string | 条件の型。 |
| string |
条件の状態、 |
| string | 条件の最後の遷移の理由を示すプログラムによる識別子。 |
| string | 遷移の詳細を示す人が判読できるメッセージ。 |
| string | 最後にある状態から別の状態に遷移した時間。 |
| - | Service Registry Operator によって管理される OpenShift リソースの一覧 |
| string | リソースの種類。 |
| string | リソースの namespace。 |
| string | リソース名。 |
7.4. Service Registry 管理リソース
Service Registry のデプロイ時に Service Registry Operator によって管理されるリソースは以下のとおりです。
-
Deployment
-
Service
-
Ingress
(およびRoute
) -
PodDisruptionBudget
7.5. Service Registry Operator ラベル
通常 Service Registry Operator によって管理されるリソースには、以下のようにラベルが付けられます。
表7.3 管理されたリソースの Service Registry Operator ラベル
ラベル | 説明 |
---|---|
|
指定の |
|
デプロイメントの型: |
|
デプロイメントの名前: |
| Service Registry または Service Registry Operator のバージョン |
| アプリケーションのデプロイメントに推奨される Kubernetes ラベルのセット。 |
| Red Hat 製品のメータリングラベル。 |
その他のリソース
付録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」を参照してください。