6.7. 投射绑定数据


本节提供有关如何使用绑定数据的信息。

6.7.1. 绑定数据的消耗

在后备服务公开绑定数据后,如果工作负载要访问和使用这个数据,您必须将其从后备服务中项目到工作负载中。Service Binding Operator 会自动以以下方法将这一数据集项目到工作负载中:

  1. 默认情况下,作为文件。
  2. 作为环境变量,在从 ServiceBinding 资源配置 .spec.bindAsFiles 参数后。

6.7.2. 配置目录路径来项目工作负载容器内绑定数据

默认情况下,Service Binding Operator 将绑定数据作为文件挂载到工作负载资源的特定目录中。您可以使用运行工作负载的容器中的 SERVICE_BINDING_ROOT 环境变量设置来配置目录路径。

示例:绑定数据作为文件挂载

$SERVICE_BINDING_ROOT 1
├── account-database 2
│   ├── type 3
│   ├── provider 4
│   ├── uri
│   ├── username
│   └── password
└── transaction-event-stream 5
    ├── type
    ├── connection-count
    ├── uri
    ├── certificates
    └── private-key

1
根目录。
2 5
存储绑定数据的目录。
3
强制标识符,用于识别投射到对应目录中的绑定数据的类型。
4
可选:标识供应商的标识符,以便应用程序可以识别它可以连接到的后备服务类型。

要将绑定数据用作环境变量,请使用您选择的编程语言的内置语言功能,可以读取环境变量。

示例:Python 客户端使用

import os
username = os.getenv("USERNAME")
password = os.getenv("PASSWORD")

警告

使用绑定数据目录名称查找绑定数据

Service Binding Operator 使用 ServiceBinding 资源名称 (.metadata.name) 作为绑定数据目录名称。spec 还提供了一种通过 .spec.name 字段覆盖该名称的方法。因此,如果命名空间中有多个 ServiceBinding 资源,则绑定数据名称可能会发生冲突。但是,由于 Kubernetes 中卷挂载的性质,绑定数据目录只会包含来自其中一个 Secret 资源的值。

6.7.2.1. 计算将绑定数据作为文件投射的最终路径

下表总结了在将文件挂载到特定目录中时如何计算绑定数据投射的最终路径的配置:

表 6.5. 最终路径计算摘要
SERVICE_BINDING_ROOT最终路径

不可用

/bindings/<ServiceBinding_ResourceName>

dir/path/root

dir/path/root/<ServiceBinding_ResourceName>

在上表中,<ServiceBinding_ResourceName> 条目指定您在自定义资源 (CR) 的 .metadata.name 部分中配置的 ServiceBinding 资源的名称。

注意

默认情况下,投射文件的权限设置为 0644。Service Binding Operator 无法因为 Kubernetes 中的一个错误而设置特定权限,这会导致在服务需要特定权限(如 0600 )时出现问题。作为临时解决方案,您可以修改程序代码或正在工作负载资源中运行的应用程序,将文件复制到 /tmp 目录中并设置适当的权限。

要在现有 SERVICE_BINDING_ROOT 环境变量中访问和使用绑定数据,请使用您选择的编程语言的内置语言功能来读取环境变量。

示例:Python 客户端使用

from pyservicebinding import binding
try:
    sb = binding.ServiceBinding()
except binding.ServiceBindingRootMissingError as msg:
    # log the error message and retry/exit
    print("SERVICE_BINDING_ROOT env var not set")
sb = binding.ServiceBinding()
bindings_list = sb.bindings("postgresql")

在上例中,bindings_list 变量包含 postgresql 数据库服务类型的绑定数据。

6.7.3. 投射绑定数据

根据工作负载要求和环境,您可以选择将绑定数据作为文件或环境变量进行项目。

先决条件

  • 您了解以下概念:

    • 环境和工作负载要求,以及其如何与所提供的服务配合使用。
    • 在工作负载资源中消耗绑定数据。
    • 配置如何为默认方法计算数据投射的最终路径。
  • 绑定数据从后备服务公开。

流程

  1. 若要将绑定数据显示为文件,请确保工作负载运行的容器中存在现有的 SERVICE_BINDING_ROOT 环境变量,以确定目标文件夹。
  2. 要将绑定数据作为环境变量进行项目,请将自定义资源 (CR) 中 ServiceBinding 资源中的 .spec.bindAsFiles 参数的值设置为 false

6.7.4. 其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.