5.2. 了解 Service Binding Operator
应用程序开发人员需要访问支持的服务,以构建和连接工作负载。连接工作负载以支持服务始终是一个挑战,因为每个服务提供商建议以不同方式访问其机密并在工作负载中使用它们。此外,手动配置和维护这种工作负载和后备服务组合,使得流程变得繁琐、效率低下且容易出错。
Service Binding Operator 可让应用程序开发人员将工作负载与 Operator 管理的后备服务轻松绑定,而无需任何手动步骤来配置绑定连接。
5.2.1. 服务绑定术语
本节总结了服务绑定中使用的基本术语。
服务绑定 | 提供向工作负载提供服务的信息的操作表示。例如,在 Java 应用程序和它所需的数据库之间建立凭据交换。 |
后端服务 | 应用在网络上运行的任何服务或软件作为其正常操作的一部分。示例包括数据库、消息代理、带 REST 端点的应用、事件流、应用程序性能监控器 (APM) 或硬件安全模块 (HSM)。 |
工作负载(应用程序) | 任何在容器内运行的进程。示例包括 Spring Boot 应用、NodeJS Express 应用或 Ruby on Rails 应用。 |
绑定数据 | 有关用于配置集群中其他资源行为的服务的信息。示例包括凭证、连接详情、卷挂载或 secret。 |
绑定连接 | 任何在连接的组件(如可绑定后备服务)和需要支持服务的应用程序之间建立交互的连接。 |
5.2.2. 关于 Service Binding Operator
Service Binding Operator 由一个控制器和附带的自定义资源定义 (CRD) 组成,用于服务绑定。它管理工作负载的数据平面并提供支持服务。Service Binding Controller 读取由后备服务的 control plane 提供的数据。然后,它会根据通过 ServiceBinding
资源指定的规则将这些数据到工作负载。
因此,Service Binding Operator 通过自动收集和与工作负载共享绑定数据,使工作负载能够使用后备服务或外部服务。这个过程包括使后备服务绑定,并将工作负载和服务绑定在一起。
5.2.2.1. 使 Operator 管理的后备服务可绑定
要使服务可绑定,作为 Operator 供应商,您需要公开工作负载所需的绑定数据,以便与 Operator 提供的服务绑定。您可以在管理后备服务的 Operator CRD 中以注解或描述符形式提供绑定数据。
5.2.2.2. 将工作负载与后备服务绑定
通过将 Service Binding Operator 用作应用程序开发人员,您需要声明建立绑定连接的意图。您必须创建一个 Service Binding
CR 来引用后备服务。此操作会触发 Service Binding Operator 将公开的绑定数据项目到工作负载中。Service Binding Operator 接收声明的意图,并将工作负载与后备服务绑定。
Service Binding Operator 的 CRD 支持以下 API:
-
使用
binding.operators.coreos.com
API 组的服务绑定。 服务绑定(Spec API 技术预览),使用
servicebinding.io
API 组。重要带有
servicebinding.io
API 组的 Service Binding (Spec API Tech Preview) 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。有关红帽技术预览功能支持范围的详情,请参考 https://access.redhat.com/support/offerings/techpreview/。
使用 Service Binding Operator,您可以:
- 将工作负载绑定到 Operator 管理的后备服务。
- 自动配置绑定数据。
- 为服务提供商提供低接触管理经验,以调配和管理对服务的访问。
- 通过一致、声明性的服务绑定方法增强开发生命周期,消除群集环境中的差异。
5.2.3. 主要特性
公开服务的绑定数据
- 根据 CRD、自定义资源 (CR) 或资源中的注解。
- 基于 Operator Lifecycle Manager (OLM) 描述符中存在的描述符。
工作负载投射
- 使用卷挂载以文件形式预测绑定数据。
- 绑定数据作为环境变量的投射。
服务绑定选项
- 在与工作负载命名空间不同的命名空间中绑定后备服务。
- 项目绑定数据到特定的容器工作负载。
- 自动检测来自后备服务 CR 拥有的资源的绑定数据。
- 编写来自公开绑定数据的自定义绑定数据。
-
支持非
PodSpec
兼容工作负载资源。
安全性
- 支持基于角色的访问控制 (RBAC)。