第 5 章 将应用程序连接到服务
5.1. Service Binding Operator 发行注记
Service Binding Operator 由一个控制器和附带的自定义资源定义 (CRD) 组成,用于服务绑定。它管理工作负载的数据平面并提供支持服务。Service Binding Controller 读取由后备服务的 control plane 提供的数据。然后,它会根据通过 ServiceBinding
资源指定的规则将这些数据到工作负载。
使用 Service Binding Operator,您可以:
- 将工作负载与 Operator 管理的后备服务绑定。
- 自动配置绑定数据。
- 为服务提供商提供低接触管理经验,以调配和管理对服务的访问。
- 通过一致、声明性的服务绑定方法增强开发生命周期,消除群集环境中的差异。
5.1.1. 使开源包含更多
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。这些更改将在即将发行的几个发行本中逐渐实施。详情请查看 Red Hat CTO Chris Wright 信息。
5.1.2. Service Binding Operator 1.0.1 发行注记
Service Binding Operator 现在包括在 OpenShift Container Platform 4.7、4.8 和 4.9 中。
Service Binding Operator 1.0.1 支持 OpenShift Container Platform 4.9 及之后的版本运行:
- IBM Power 系统
- IBM Z 和 LinuxONE
Service Binding Operator 1.0.1 的自定义资源定义(CRD)支持以下 API:
-
使用
binding.operators.coreos.com
API 组的服务绑定。 服务绑定(Spec API 技术预览),使用
servicebinding.io
API 组。重要带有
servicebinding.io
API 组的 Service Binding (Spec API Tech Preview) 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
5.1.2.1. 支持列表
这个版本中的一些功能当前还处于技术预览状态。它们并不适用于在生产环境中使用。
在下表中,功能被标记为以下状态:
- TP: 技术预览
- GA: 正式发行
请参阅红帽门户网站中关于对技术预览功能支持范围的信息:
功能 | Service Binding Operator 1.0.1 |
---|---|
| GA |
| TP |
5.1.2.2. 修复的问题
-
在此次更新之前,从 CR 的
postgresql.k8s.enterpriesedb.io/v1
API 的Cluster
自定义资源(CR)中绑定数据值,从 CR 的.metadata.name
字段收集主机
绑定值。收集的绑定值是不正确的主机名,正确的主机名在.status.writeService
字段中可用。在这个版本中,Service Binding Operator 用来公开后备服务 CR 的绑定数据值的注解现在被修改为从.status.writeService
字段收集主机
绑定值。Service Binding Operator 使用这些修改的注解来将正确的主机名注入到主机
和供应商
绑定中。APPSVC-1040 -
在这个更新之前,当您绑定
postgres-operator.crunchydata.com/v1beta1
API 的PostgresCluster
CR 时,绑定数据值不包括数据库证书的值。因此,应用程序无法连接到数据库。在这个版本中,对 Service Binding Operator 用来从后备服务 CR 中公开绑定数据的注解的修改现在包含数据库证书。Service Binding Operator 使用以下修改后的注解来生成正确的ca.crt
、tls.crt
和tls.key
证书文件。APPSVC-1045 -
在此次更新之前,当绑定
pxc.percona.com
API 的PerconaXtraDBCluster
自定义资源(CR)时,绑定数据值不包括端口
和数据库
值。这些绑定值与其他已注入的绑定值是应用程序成功连接到数据库服务所需的值。在这个版本中,Service Binding Operator 用来公开服务 CR 的绑定数据值的注解现在被修改为项目额外的端口
和数据库
绑定值。Service Binding Operator 使用以下修改后的注解来生成完整的、应用程序用于成功连接到数据库服务所需的绑定值。APPSVC-1073
5.1.2.3. 已知问题
目前,当您在单一命名空间安装模式下安装 Service Binding Operator 时,因为缺少一些命名空间范围的访问控制(RBAC)规则,所以应用程序可能无法成功绑定到 Service Binding Operator 可自动探测和绑定到的、几个已知的 Operator 支持的服务。另外,还会生成以下出错信息:
错误信息示例
`postgresclusters.postgres-operator.crunchydata.com "hippo" is forbidden: User "system:serviceaccount:my-petclinic:service-binding-operator" cannot get resource "postgresclusters" in API group "postgres-operator.crunchydata.com" in the namespace "my-petclinic"`
临时解决方案 1:在
all namespaces
安装模式中安装 Service Binding Operator。这样,会存在适当的集群范围的 RBAC 规则,绑定会成功。临时解决方案 2:如果无法在
all namespaces
安装模式下安装 Service Binding Operator,在安装了 Service Binding Operator 的命名空间中安装以下角色绑定:示例:用于 Crunchy Postgres Operator 的角色绑定
kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: service-binding-crunchy-postgres-viewer subjects: - kind: ServiceAccount name: service-binding-operator roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: service-binding-crunchy-postgres-viewer-role
5.1.3. Service Binding Operator 1.0 发行注记
Service Binding Operator 现在包括在 OpenShift Container Platform 4.7、4.8 和 4.9 中。
Service Binding Operator 1.0 的自定义资源定义 (CRD) 支持以下 API:
-
使用
binding.operators.coreos.com
API 组的服务绑定。 服务绑定(Spec API 技术预览),使用
servicebinding.io
API 组。重要带有
servicebinding.io
API 组的 Service Binding (Spec API Tech Preview) 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
5.1.3.1. 支持列表
这个版本中的一些功能当前还处于技术预览状态。它们并不适用于在生产环境中使用。
在下表中,功能被标记为以下状态:
- TP: 技术预览
- GA: 正式发行
请参阅红帽门户网站中关于对技术预览功能支持范围的信息:
功能 | Service Binding Operator 1.0 |
---|---|
| GA |
| TP |
5.1.3.2. 新功能
Service Binding Operator 1.0 支持 OpenShift Container Platform 4.9 及之后的版本运行:
- IBM Power 系统
- IBM Z 和 LinuxONE
本节重点介绍了 Service Binding Operator 1.0 中的新功能:
公开服务的绑定数据
- 根据 CRD、自定义资源 (CR) 或资源中的注解。
- 基于 Operator Lifecycle Manager (OLM) 描述符中存在的描述符。
- 支持置备的服务
工作负载投射
- 使用卷挂载以文件形式预测绑定数据。
- 绑定数据作为环境变量的投射。
服务绑定选项
- 在与工作负载命名空间不同的命名空间中绑定后备服务。
- 项目绑定数据到特定的容器工作负载。
- 自动检测来自后备服务 CR 拥有的资源的绑定数据。
- 编写来自公开绑定数据的自定义绑定数据。
-
支持非
PodSpec
兼容工作负载资源。
安全性
- 支持基于角色的访问控制 (RBAC)。