4.9. アプリケーション内および複数のアプリケーション間でのコンポーネントの接続
アプリケーション内で複数のコンポーネントをグループ化することに加え、Topology ビューを使用してコンポーネントを相互に接続することもできます。バインディングコネクターまたはビジュアルコネクターのいずれかを使用してコンポーネントを接続できます。
コンポーネント間のバインディング接続は、ターゲットノードが Operator がサポートするサービスである場合にのみ確立できます。これは、矢印をこのようなターゲットノードにドラッグする際に表示される Create a binding connector ツールチップによって示されます。アプリケーションがバインディングコネクターを使用してサービスに接続されると、サービスバインディング要求が作成されます。その後、Service Binding Operator コントローラーは中間のシークレットを使用して、必要なバインディングデータを環境変数としてアプリケーションのデプロイメントに挿入します。要求が正常に行われると、アプリケーションが再デプロイされ、接続されたコンポーネント間の対話が確立されます。
ビジュアルコネクターは、接続先となるコンポーネント間の視覚的な接続のみを表示します。コンポーネント間の対話は確立されません。ターゲットノードが Operator がサポートするサービスではない場合、Create a visual connector ツールチップは矢印をターゲットノードにドラッグすると表示されます。
4.9.1. コンポーネント間のビジュアル接続の作成
ビジュアルコネクターを使用してアプリケーションコンポーネントに接続する意図を示すことができます。
この手順では、MongoDB サービスと Node.js アプリケーション間のビジュアル接続の作成例を説明します。
前提条件
- Developer パースペクティブを使用して Node.js アプリケーションを作成し、デプロイしている。
- Developer パースペクティブを使用して MongoDB サービスを作成し、デプロイしている。
手順
カーソルを MongoDB サービスの上に置き、ノードの矢印を確認します。
図4.8 Connector
- 矢印をクリックして Node.js コンポーネントの方にドラッグし、 MongoDB サービスをこれに接続します。
-
MongoDB サービスをクリックし、Overview パネルを表示します。Annotations セクションで、編集アイコンをクリックして Key =
app.openshift.io/connects-to
および Value =[{"apiVersion":"apps.openshift.io/v1","kind":"DeploymentConfig","name":"nodejs-ex"}]
アノテーションがサービスに追加されていることを確認します。
他のアプリケーションやコンポーネントを同様に作成し、それらの間の接続を確立することができます。
図4.9 複数アプリケーションへの接続
4.9.2. コンポーネント間のバインディング接続の作成
サービスバインディングはテクノロジープレビュー機能としてのみご利用いただけます。テクノロジープレビュー機能は Red Hat の実稼働環境でのサービスレベルアグリーメント (SLA) ではサポートされていないため、Red Hat では実稼働環境での使用を推奨していません。Red Hat は実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲についての詳細は、https://access.redhat.com/ja/support/offerings/techpreview/ を参照してください。
現時点で、etcd などのいくつかの特定の Operator や PostgresSQL Database Operator のサービスインスタンスのみがバインド可能です。
Operator がサポートするコンポーネントとのバインディング接続を確立できます。
この手順では、PostgreSQL データベースサービスと Node.js アプリケーション間のバインディング接続の作成例を説明します。PostgreSQL Database Operator がサポートするサービスでバインディング接続を作成するには、まずサポートする CatalogSource
リソースを使用して Red Hat が提供する PostgreSQL データベース Operator を OperatorHub に追加し、Operator をインストールする必要があります。次に、PostreSQL Database Operator はシークレット、設定マップ、ステータス、および仕様属性のバインディング情報を公開する Database
リソースを作成し、管理します。
前提条件
- Developer パースペクティブを使用して Node.js アプリケーションを作成し、デプロイしている。
- OperatorHub から Service Binding Operator をインストールしている。
手順
Red Hat が提供する PostgresSQL Database Operator を OperatorHub に追加するサポートする
CatalogSource
を作成します。- +Add ビューで、YAML オプションをクリックし、 Import YAML 画面を表示します。
以下の YAML ファイルを追加して
CatalogSource
リソースを適用します。apiVersion: operators.coreos.com/v1alpha1 kind: CatalogSource metadata: name: sample-db-operators namespace: openshift-marketplace spec: sourceType: grpc image: quay.io/redhat-developer/sample-db-operators-olm:v1 displayName: Sample DB OLM registry updateStrategy: registryPoll: interval: 30m
-
Create をクリックして、
CatalogSource
をクラスターに作成します。
Red Hat が提供する PostgreSQL データベース Operator をインストールします。
-
コンソールの Administrator パースペクティブで、Operators
OperatorHub に移動します。 - Database カテゴリーで、PostgreSQL Database Operator を選択して、これをインストールします。
-
コンソールの Administrator パースペクティブで、Operators
アプリケーションのデータベース (DB) インスタンスを作成します。
-
Developer パースペクティブに切り替え、
test-project
などの適切なプロジェクトにいることを確認します。 - +Add ビューで、YAML オプションをクリックし、 Import YAML 画面を表示します。
エディターでサービスインスタンスの YAML を追加し、Create をクリックしてサービスをデプロイします。以下は、サービス YAML のサンプルです。
apiVersion: postgresql.baiju.dev/v1alpha1 kind: Database metadata: name: db-demo spec: image: docker.io/postgres imageName: postgres dbName: db-demo
DB インスタンスが Topology ビューにデプロイされます。
-
Developer パースペクティブに切り替え、
- Topology ビューで Node.js コンポーネントにマウスを合わせて、ノードの矢印を確認します。
矢印をクリックし、db-demo-postgresql サービスにドラッグし、Node.js アプリケーションとのバインディング接続を確立します。サービスバインディング要求が作成され、Service Binding Operator コントローラーは DB 接続情報を環境変数としてアプリケーションのデプロイメントに挿入します。要求が正常に行われると、アプリケーションが再デプロイされ、接続が確立されます。
図4.10 バインディングコネクター
矢印をドラッグしてコンテキストメニューを使用し、Operator がサポートするサービスへのバインディング接続を追加して作成できます。
図4.11 バインディング接続を作成するためのコンテキストメニュー