第1章 サービスバインディング
本章では、バージョン 2.7.5 で Red Hat ビルドの Quarkus に追加され、バージョン 2.13 の テクノロジープレビュー にあるサービスバインディングおよびワークロードのプロジェクションについて説明します。
通常、OpenShift アプリケーションとサービスは、デプロイ可能なワークロード とも呼ばれるため、サービス URL や認証情報などの追加情報を取得するには、他のサービスに接続する必要があります。
サービスバインディング Operator は、この情報の取得に必要な通信を管理します。次に、この Operator は以下を判別します。
- サービスコンシューマーがそのようなサービスにバインドする予定
-
quarkus-kubernetes-service-binding
エクステンションなどのアプリケーションとサービスバインディングのツール
Quarkus は、サービスをアプリケーションにバインドする ために Kubernetes の Service Binding Specification をサポートします。
具体的には、Quarkus は仕様の Workload Projection 部分を実装しているため、ユーザー設定を必要とせずに、データベースやブローカーなどのサービスにアプリケーションをバインドできます。
利用可能なエクステンションのサービスバインディングを有効にするには、quarkus-kubernetes-service-binding
エクステンションをアプリケーションの依存関係に追加します。
サービスバインディングとワークロードプロジェクションには、次のエクステンションを使用できます。
-
quarkus-jdbc-mariadb
-
quarkus-jdbc-mssql
-
quarkus-jdbc-mysql
-
quarkus-jdbc-postgresql
-
quarkus-mongo-client
- テクノロジープレビュー -
quarkus-kafka-client
-
quarkus-smallrye-reactive-messaging-kafka
-
quarkus-reactive-mssql-client
- テクノロジープレビュー -
quarkus-reactive-mysql-client
-
quarkus-reactive-pg-client
-
1.1. ワークロードプロジェクション
ワークロードプロジェクションは、Kubernetes クラスターからサービスの設定を取得するプロセスです。この設定は、特定の規則に従うディレクトリー構造の形式を取り、アプリケーションまたはマウントされたボリュームとしてのサービスに割り当てられます。kubernetes-service-binding
エクステンションは、このディレクトリー構造を使用して設定ソースを作成します。これにより、データベースやメッセージブローカーなどの追加モジュールを設定できるようになります。
アプリケーション開発中のワークロードのプロジェクションを使用して、実際のアプリケーションコードや設定を変更せずに、アプリケーションを開発データベースまたは他のローカル実行サービスに接続できます。
ディレクトリー構造が test リソースに含まれ、統合テストに渡されるワークロードプロジェクションの例は、Kubernetes Service Binding データソース GitHub リポジトリー を参照してください。
-
k8s-sb
ディレクトリーは、すべてのサービスバインディングのルートです。この例では、fruit-db
という名前データベース 1 つのみをバインドします。このバインディングデータベースには、type
file があります。これは、データベースタイプとしてpostgresql
を示し、ディレクトリー内の他のファイルは接続を確立するために必要な情報を提供します。 -
Quarkus プロジェクトが OpenShift Container Platform によって設定された
SERVICE_BINDING_ROOT
環境変数から情報を取得したら、ファイルシステムにある生成された設定ファイルを見つけて、その設定を使用して configuration-file の値を特定の拡張機能のプロパティーにマップできます。