検索

1.5. 自動サービスバインディング

download PDF

quarkus-kubernetes-service-binding エクステンションは、互換性のあるバインド可能な Operator によって提供される外部サービスへのアクセスを必要とするアプリケーションを検出した場合に、ServiceBinding リソースを自動的に生成できます。

注記

自動サービスバインディングは、限られた一連のサービスタイプセットに対してのみ生成できます。

定着した Kubernetes および Quarkus サービス用語に合わせて、この章ではこれらのサービスタイプを "kind" と呼びます。

表1.1 自動サービスバインディングをサポートする Operator

サービスバインディングのタイプ

Operator

API バージョン

種類

postgresql

CrunchyData Postgres

postgres-operator.crunchydata.com/v1beta1

PostgresCluster

mysql

Percona XtraDB Cluster

pxc.percona.com/v1-9-0

PerconaXtraDBCluster

mongo

Percona MongoDB

psmdb.percona.com/v1-9-0

PerconaServerMongoDB

重要
  • Red Hat build of Quarkus 3.8 の MongoDB Operator に対するサポートは、テクノロジープレビューとして提供され、クライアントのみに適用されます。
  • Red Hat build of Quarkus 3.8 でサポートされている Panache エクステンションのリストは、Quarkus application configurator ページを参照してください。

1.5.1. 自動データソースバインディング

従来のデータベースでは、データソースが次のように設定されている場合に自動バインドが開始します。

quarkus.datasource.db-kind=postgresql

上記が設定されていると、アプリケーション内に quarkus-datasourcequarkus-jdbc-postgresqlquarkus-kubernetesquarkus-kubernetes-service-binding などのエクステンションが存在すれば、postgresql データベースタイプの ServiceBinding リソースが作成されます。

生成された ServiceBinding リソースは、使用している postgresql Operator と一致する Operator リソースの apiVersion プロパティーと kind プロパティーを使用して、サービスまたはリソースをアプリケーションにバインドします。

データベースサービスの名前を指定しない場合は、db-kind プロパティーの値がデフォルトの名前として使用されます。

 services:
 - apiVersion: postgres-operator.crunchydata.com/v1beta1
   kind: PostgresCluster
   name: postgresql

データソースの名前を次のように指定します。

quarkus.datasource.fruits-db.db-kind=postgresql

生成された ServiceBinding 内の service が、次のように表示されます。

 services:
 - apiVersion: postgres-operator.crunchydata.com/v1beta1
   kind: PostgresCluster
   name: fruits-db

同様に、mysql を使用する場合はデータソースの名前を次のように指定できます。

quarkus.datasource.fruits-db.db-kind=mysql

生成された service には以下が含まれます。

 services:
 - apiVersion: pxc.percona.com/v1-9-0
   kind: PerconaXtraDBCluster
   name: fruits-db

1.5.1.1. 自動サービスバインディングのカスタマイズ

自動サービスバインディング機能は、できる限り手動設定を排除するために開発されましたが、生成された ServiceBinding リソースを手動で変更することが必要になる場合もあります。

生成プロセスは、アプリケーションから展開した情報とサポートされている Operator の知識のみに依存し、クラスターにデプロイされたものが反映されない可能性があります。

生成されたリソースは、一般的なサービス kind でサポートされているバインド可能な Operator の知識と、潜在的な不一致を防ぐために開発された一連の規則のみに基づきます。

  • ターゲットリソース名はデータソース名と一致しません。
  • そのサービス kind のデフォルト Operator ではなく、特定の Operator を使用する必要があります。
  • ユーザーがデフォルトまたは最新以外のバージョンを使用する必要がある場合は、バージョンの競合が発生します。

命名規則:

  • ターゲットリソースの座標は、Operator タイプとサービス kind に応じて確立されます。
  • デフォルトでは、ターゲットリソース名は postgresqlmysqlmongo などのサービス kind と一致します。
  • 名前付きデータソースの場合は、そのデータソース名が使用されます。
  • クライアントの名前は、名前付き mongo クライアントに使用されます。

例 1: 名前の不一致

名前の不一致を修正するために生成された ServiceBinding を変更する必要がある場合は、quarkus.kubernetes-service-binding.services プロパティーを使用してサービス名をサービスキーとして指定します。

通常、service key はサービスの名前 (例: データソースの名前、mongo クライアントの名前など) です。この値が使用できない場合は、postgresqlmysqlmongo などのデータソースタイプが代わりに使用されます。

サービスタイプ間の名前の競合を避けるには、接頭辞として service key の前に特定のデータソースタイプ (postgresql-<person> など) を付けます。

次の例は、PostgresCluster リソースの apiVersion プロパティーをカスタマイズする方法を示しています。

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.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

関連情報

  • 使用可能なプロパティーの詳細は、Kubernetes サービスバインディング仕様の workload projection を参照してください。

改訂日時: 2024-07-24

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.