1.4. 半自動メソッドを使用して ServiceBinding カスタムリソースを生成する
ServiceBinding リソースをセミコロンで生成できます。以下の手順は、アプリケーションの設定およびデプロイのための Operator のインストール方法など、OpenShift Container Platform のデプロイメントプロセスを示しています。
次の手順では、Crunchy Data から Service Binding Operator および PostgreSQL Operator をインストールします。
PostgreSQL Operator は、サードパーティーのコンポーネントです。PostgreSQL Operator のサポートポリシーと使用条件については、ソフトウェアベンダーである Crunchy Data にお問い合わせください。
次に、この手順では PostgreSQL クラスター(簡単なアプリケーション)を作成し、最後に、これをプロビジョニングされたクラスターにバインドします。
前提条件
- OpenShift Container Platform 4.10 クラスターを作成している。
- OperatorHub からクラスター全体の Operator をインストールするのに必要な OperatorHub および OpenShift Container Platform 管理者権限にアクセスできる。
以下がインストールされている。
-
oc
オーケストレーションツール - Maven と Java
-
手順
以下の手順では、HOME (~
) ディレクトリーを保存先およびインストール先として使用します。
OpenShift Container Platform Web UI から Service Binding Operator をインストールする に記載された手順を使用して、Service Binding Operator バージョン 1.0 以降をインストールします。
インストールを確認します。
oc get csv -n openshift-operators -w
oc get csv -n openshift-operators -w
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Service Binding Operator の
フェーズ
がSucceeded
に設定されている場合は、次のステップに進みます。
-
Service Binding Operator の
Web コンソールまたは CLI を使用して、OperatorHub から Crunchy PostgreSQL Operator をインストールします。手順へのリンクは、デプロイと使用 セクションを参照してください。
インストールを確認します。
oc get csv -n openshift-operators -w
oc get csv -n openshift-operators -w
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Operator の
フェーズ
がSucceeded
に設定されている場合は、次のステップに進みます。
-
Operator の
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 以下の URL をブラウザーで開きます。
http://localhost:8080/todo
http://localhost:8080/todo
Copy to Clipboard Copied! Toggle word wrap Toggle overflow