4.9. 在应用程序内和应用程序间连接组件
除了对一个应用程序中的多个组件进行分组外,还可以使用 Topology 视图来相互连接组件。您可以使用绑定连接器或视觉连接器来连接组件。
只有当目标节点是 Operator 支持的服务时,才可以在组件之间建立绑定连接。为了表示这种情况,当您将箭头拖到这样的目标节点上时,会出现 Create a binding connector 工具提示。当应用程序使用绑定连接器连接到服务时,会创建服务绑定请求。然后,Service Binding Operator 控制器使用一个中间的 secret 将所需的绑定数据注入应用程序部署中作为环境变量。请求成功后,会重新部署应用程序以在连接的组件间建立交互。
视觉连接器只在组件之间建立视觉连接,描述连接意图。没有建立组件之间的交互。如果目标节点不是一个 Operator 支持的服务,当您将箭头拖到目标节点上时,将会显示 Create a visual connector 工具提示。
4.9.1. 在组件之间创建视觉连接
您可以使用可视连接器来描述连接应用程序组件的意图。
此流程介绍了在 MongoDB 服务与 Node.js 应用程序间创建可视连接的示例。
先决条件
- 确保您已使用 Developer 视角创建并部署了 Node.js 应用程序。
- 确保已使用 Developer 视角创建并部署了 MongoDB 服务。
流程
光标悬停到 MongoDB 服务上,节点上出现悬浮的箭头。
图 4.8. 连接器
- 点击箭头并将它拖向 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. 在组件之间创建绑定连接
服务绑定只是一个技术预览功能。红帽产品服务等级协议 (SLA) 不支持技术预览功能,且可能无法完成。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的详情,请参阅 https://access.redhat.com/support/offerings/techpreview/。
目前,只有几个特定的 Operator(如 etcd 和 PostgresSQL Database)的 Operator 服务实例可以绑定。
您可以与 Operator 支持的组件建立绑定连接。
此流程介绍了在 PostgreSQL 数据库服务和 Node.js 应用程序间创建绑定连接的示例。要创建与 PostgreSQL Database Operator 支持的服务的绑定连接,必须首先使用 CatalogSource
资源将红帽提供的 PostgreSQL Database Operator 添加到 OperatorHub,然后安装 Operator。然后,PostSQL Database Operator 会创建和管理 Database
资源,这会在 secret、配置映射、状态和 spec 属性中公开绑定信息。
先决条件
- 确保您已使用 Developer 视角创建并部署了 Node.js 应用程序。
- 确保您已从 OperatorHub 安装了 Service Binding Operator。
流程
创建一个
CatalogSource
资源,将红帽提供的 PostgresSQL Database Operator 添加到 OperatorHub。- 在 +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
资源。
安装红帽提供的 PostgreSQL Database 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. 创建绑定连接的上下文菜单