1.4. 使用分号方法生成 ServiceBinding 自定义资源
您可以自动生成 ServiceBinding 资源。以下流程演示了 OpenShift Container Platform 部署过程,包括安装用于配置和部署应用程序的 Operator。
在此过程中,您可以从 Crunchy Data 安装 Service Binding Operator 和 PostgreSQL Operator。
PostgreSQL Operator 是一个第三方组件。对于 PostgreSQL Operator 支持策略和使用条款,请联系软件厂商 Crunchy Data。
然后,流程涉及创建 PostgreSQL 集群,设置直接的应用程序,然后部署并将其绑定到置备的集群。
先决条件
- 您已创建了 OpenShift Container Platform 4.12 集群。
- 管理员可以访问 OperatorHub 和 OpenShift Container Platform,以便从 OperatorHub 安装集群范围的 Operator。
已安装:
-
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 -wCopy to Clipboard Copied! Toggle word wrap Toggle overflow 当 Service Binding Operator 的
阶段设置为Succeeded时,继续执行下一步。
使用 Web 控制台或 CLI 安装来自 OperatorHub 的 Crunchy PostgreSQL Operator。
验证安装:
oc get csv -w
oc get csv -wCopy to Clipboard Copied! Toggle word wrap Toggle overflow 当 Operator 的
阶段被设置为Succeeded时,继续下一步。
创建 PostgreSQL 集群:
创建新的 OpenShift Container Platform 命名空间,它将用于稍后创建集群并部署应用程序。此命名空间在此过程中称为
演示。oc new-project demo
oc new-project demoCopy 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.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意此命令假设您将
pg-cluster.yml文件保存到 HOME 目录中。检查 pod 以验证安装:
oc get pods -n demo
oc get pods -n demoCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
等待 Pod 进入
READY状态,表示安装已完成。
-
等待 Pod 进入
创建绑定到 PostgreSQL 数据库的 Quarkus 应用程序。
您要创建的应用程序是基本的
todo应用程序,它使用 Hibernate 和 Panache 连接到 PostgreSQL。生成应用程序:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 添加连接到 PostgreSQL 所需的扩展,为我们的应用程序生成所有所需的资源和构建容器镜像:
./mvnw quarkus:add-extension -Dextensions="rest-jackson,jdbc-postgresql,hibernate-orm-panache,openshift,kubernetes-service-binding"
./mvnw quarkus:add-extension -Dextensions="rest-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 名称 :
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 -DskipTestsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 等待部署完成。
验证
验证部署:
oc get pods -n demo -w
oc get pods -n demo -wCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证安装:
端口在本地转发到 HTTP 端口,然后访问
/HEKETI 端点。oc port-forward service/todo-example 8080:80
oc port-forward service/todo-example 8080:80Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在网页浏览器中打开以下 URL:
http://localhost:8080/todo
http://localhost:8080/todoCopy to Clipboard Copied! Toggle word wrap Toggle overflow