1.5. 自動サービスバインディング
quarkus-kubernetes-service-binding
エクステンションは、アプリケーションが利用可能なバインド可能な Operator によって提供される外部サービスにアクセスする必要があることを検知した後に、ServiceBinding
リソースを自動的に生成できます。
自動サービスバインディングは、限られた数のサービスタイプに対して生成できます。本章では、Kubernetes および Quarkus サービスの確立された用語と一致するように、これらのサービスタイプを種類として説明します。
サービスバインディングのタイプ | Operator | API バージョン | Kind |
| postgres-operator.crunchydata.com/v1beta1 | PostgresCluster | |
| pxc.percona.com/v1-9-0 | PerconaXtraDBCluster | |
| psmdb.percona.com/v1-9-0 | PerconaServerMongoDB |
- MongoDB Operator の Red Hat ビルドの Quarkus 2.13 のサポートはテクノロジープレビューとして提供され、クライアントにのみ適用されます。
- Red Hat ビルドの Quarkus 2.13 でサポートされる Panache エクステンションのリストは、Quarkus application configurator ページを参照してください。
1.5.1. 自動データソースバインディング リンクのコピーリンクがクリップボードにコピーされました!
従来のデータベースでは、データソースが次のように設定されている場合に自動バインドが開始されます。
quarkus.datasource.db-kind=postgresql
quarkus.datasource.db-kind=postgresql
以前の設定は、quarkus-datasource
、quarkus-jdbc-postgresql
、quarkus-kubernetes
、および quarkus-kubernetes-service-binding
プロパティーが含まれると、postgresql
データベースタイプの ServiceBinding
リソースが生成されます。
生成された ServiceBinding
リソースは、使用している postgresql
Operator と一致する Operator リソースの apiVersion
プロパティーと kind
プロパティーを使用して、サービスまたはリソースをアプリケーションにバインドします。
データベースサービスの名前を指定しない場合は、db-kind
プロパティーの値がデフォルトの名前として使用されます。
services: - apiVersion: postgres-operator.crunchydata.com/v1beta1 kind: PostgresCluster name: postgresql
services:
- apiVersion: postgres-operator.crunchydata.com/v1beta1
kind: PostgresCluster
name: postgresql
データソースの名前を次のように指定します。
quarkus.datasource.fruits-db.db-kind=postgresql
quarkus.datasource.fruits-db.db-kind=postgresql
生成された ServiceBinding
内の service
が、次のように表示されます。
services: - apiVersion: postgres-operator.crunchydata.com/v1beta1 kind: PostgresCluster name: fruits-db
services:
- apiVersion: postgres-operator.crunchydata.com/v1beta1
kind: PostgresCluster
name: fruits-db
同様に、mysql
を使用する場合はデータソースの名前を次のように指定できます。
quarkus.datasource.fruits-db.db-kind=mysql
quarkus.datasource.fruits-db.db-kind=mysql
生成された service
には以下が含まれます。
services: - apiVersion: pxc.percona.com/v1-9-0 kind: PerconaXtraDBCluster name: fruits-db
services:
- apiVersion: pxc.percona.com/v1-9-0
kind: PerconaXtraDBCluster
name: fruits-db
1.5.1.1. 自動サービスバインディングのカスタマイズ リンクのコピーリンクがクリップボードにコピーされました!
自動サービスバインディング機能は、できるだけ多くの手動設定を排除するために開発されましたが、生成された ServiceBinding
リソースを手動で変更する必要がある場合があります。生成プロセスは、アプリケーションから抽出された情報と、サポートされている Operator の知識だけに依存しており、クラスターにデプロイされる内容を反映していない可能性があります。生成されたリソースは、一般的なサービスの種類と、次のような不一致を防ぐために開発された一連の規則に対して、サポートされているバインド可能なオペレーターに関する純粋な知識に基づいています。
- ターゲットリソース名がデータソース名と一致しない。
- そのサービスの種類についてデフォルトの Operator ではなく、特定の Operator を使用する必要があります。
- ユーザーがデフォルトまたは latest 以外のバージョンを使用する必要がある場合に発生するバージョンの競合
表記規則
- ターゲットリソースの座標は、Operator のタイプとサービスの種類に基づいて決定されます。
-
ターゲットリソース名はデフォルトで、
postgresql
、mysql
、mongo
などのサービスの種類と一致するように設定されます。 - 名前付きデータソースの場合は、データソースの名前が使用されます。
-
名前付きの
mongo
クライアントでは、クライアントの名前が使用されます。
例 1: 名前の不一致
生成された ServiceBinding
を変更して名前の不一致を修正する必要がある場合は、quarkus.kubernetes-service-binding.services
プロパティーを使用して、サービス名をサービスキーとして指定します。
サービスキー
は通常、サービスの名前(データソースの名前、mongo
クライアントの名前など)です。この値が利用できない場合は、postgresql
、mysql
mongo
などのデータソースタイプが代わりに使用されます。
サービスタイプ間の名前の競合を避けるには、接頭辞として service key
の前に特定のデータソースタイプ (postgresql-<person>
など) を付けます。
次の例は、PostgresCluster
リソースの apiVersion
プロパティーをカスタマイズする方法を示しています。
quarkus.datasource.db-kind=postgresql quarkus.kubernetes-service-binding.services.postgresql.api-version=postgres-operator.crunchydata.com/v1beta2
quarkus.datasource.db-kind=postgresql
quarkus.kubernetes-service-binding.services.postgresql.api-version=postgres-operator.crunchydata.com/v1beta2
例 2: データソースのカスタム名の適用
例 1 では、db-kind
(postgresql
)がサービスキーとして使用されていた。この例では、データソースの名前が規則に従って付けられているため、データソース名(fruits-db
)が代わりに使用されます。
次の例は、名前付きデータソースの場合はデータソース名がターゲットリソースの名前として使用されることを示しています。
quarkus.datasource.fruits-db.db-kind=postgresql
quarkus.datasource.fruits-db.db-kind=postgresql
これは、次の設定と同じ効果があります。
quarkus.kubernetes-service-binding.services.fruits-db.api-version=postgres-operator.crunchydata.com/v1beta1 quarkus.kubernetes-service-binding.services.fruits-db.kind=PostgresCluster quarkus.kubernetes-service-binding.services.fruits-db.name=fruits-db
quarkus.kubernetes-service-binding.services.fruits-db.api-version=postgres-operator.crunchydata.com/v1beta1
quarkus.kubernetes-service-binding.services.fruits-db.kind=PostgresCluster
quarkus.kubernetes-service-binding.services.fruits-db.name=fruits-db
改訂日時: 2024-04-23