1.4. 半自動メソッドを使用して ServiceBinding カスタムリソースを生成する
ServiceBinding
リソースを半自動的に生成できます。以下の手順は、アプリケーションの設定とデプロイに使用する Operator のインストールを含む、OpenShift Container Platform のデプロイメントプロセスを示しています。
この手順では、Service Binding Operator と Crunchy Data の PostgreSQL Operator をインストールします。
PostgreSQL Operator は、サードパーティーのコンポーネントです。PostgreSQL Operator のサポートポリシーと使用条件については、ソフトウェアベンダーである Crunchy Data にお問い合わせください。
次の手順には、PostgreSQL クラスターの作成、単純なアプリケーションのセットアップ、その後のプロビジョニングされたクラスターへのデプロイとバインドが含まれます。
前提条件
- OpenShift Container Platform 4.12 クラスターを作成している。
- OperatorHub からクラスター全体に Operator をインストールするために必要な、OperatorHub および OpenShift Container Platform への管理者権限を持っている。
以下がインストールされている。
-
OpenShift、
oc
、オーケストレーションツール - Maven と Java
-
OpenShift、
手順
以下の手順では、HOME (~
) ディレクトリーを保存先およびインストール先として使用します。
OpenShift Container Platform Web UI から Service Binding Operator をインストールする に記載された手順を使用して、Service Binding Operator バージョン 1.3.3 以降をインストールします。
インストールを確認します。
oc get csv -w
oc get csv -w
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Service Binding Operator の
phase
がSucceeded
に設定されたことを確認し、次のステップに進みます。
Web コンソールまたは CLI を使用して、OperatorHub から Crunchy PostgreSQL Operator をインストールします。
インストールを確認します。
oc get csv -w
oc get csv -w
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Operator の
phase
がSucceeded
に設定されたことを確認し、次のステップに進みます。
PostgreSQL クラスターを作成します。
新しい OpenShift Container Platform namespace を作成します。これは、後でクラスターを作成し、アプリケーションをデプロイするために使用します。ここで説明する手順では、この namespace を
demo
と呼びます。oc new-project demo
oc new-project demo
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のカスタムリソースを作成し、
pg-cluster.yml
として保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記この YAML は、Service Binding Operator Quickstart から再利用しています。
作成したカスタムリソースを適用します。
oc apply -f ~/pg-cluster.yml
oc apply -f ~/pg-cluster.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記このコマンドは、
pg-cluster.yml
ファイルが HOME ディレクトリーに保存されていることを前提としています。Pod でインストールを確認します。
oc get pods -n demo
oc get pods -n demo
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
インストールが完了して Pod が
READY
状態になるまで待ちます。
-
インストールが完了して Pod が
PostgreSQL データベースにバインドする Quarkus アプリケーションを作成します。
ここで作成するアプリケーションは、Hibernate と Panache を使用して PostgreSQL に接続する基本的な
todo
アプリケーションです。アプリケーションを生成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow PostgreSQL への接続、すべての必要リソースの生成、およびアプリケーション用コンテナーイメージの構築に必要なエクステンションをすべて追加します。
./mvnw quarkus:add-extension -Dextensions="resteasy-reactive-jackson,jdbc-postgresql,hibernate-orm-panache,openshift,kubernetes-service-binding"
./mvnw quarkus:add-extension -Dextensions="resteasy-reactive-jackson,jdbc-postgresql,hibernate-orm-panache,openshift,kubernetes-service-binding"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の例に示すように、単純なエンティティーを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow エンティティーを公開します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
ServiceBinding
リソースを生成して、ターゲット PostgreSQL クラスターにバインドします。サービス座標を指定してバインディングを生成し、データソースを設定します。
-
apiVersion:
postgres-operator.crunchydata.com/v1beta1
-
kind:
PostgresCluster
name:
pg-cluster
次の例に示すとおり、これは接頭辞
quarkus.kubernetes-service-binding.services.<id>.
を設定して行います。id
は、プロパティーをグループ化するために使用され、任意の値を割り当てることができます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
apiVersion:
いくつかの初期データを指定して
import.sql
スクリプトを作成します。INSERT INTO todo(id, title, completed) VALUES (nextval('hibernate_sequence'), 'Finish the blog post', false);
INSERT INTO todo(id, title, completed) VALUES (nextval('hibernate_sequence'), 'Finish the blog post', false);
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
アプリケーション (
ServiceBinding
を含む) をデプロイし、クラスターに適用します。mvn clean install -Dquarkus.kubernetes.deploy=true -DskipTests
mvn clean install -Dquarkus.kubernetes.deploy=true -DskipTests
Copy to Clipboard Copied! Toggle word wrap Toggle overflow デプロイメントが完了するまで待ちます。
検証
デプロイメントを確認します。
oc get pods -n demo -w
oc get pods -n demo -w
Copy to Clipboard Copied! Toggle word wrap Toggle overflow インストールを確認します。
ローカルで HTTP ポートにポート転送し、
/todo
エンドポイントにアクセスします。oc port-forward service/todo-example 8080:80
oc port-forward service/todo-example 8080:80
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Web ブラウザーで、以下の URL を開きます。
http://localhost:8080/todo
http://localhost:8080/todo
Copy to Clipboard Copied! Toggle word wrap Toggle overflow