5.7. 投射绑定数据

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

5.7.1. 绑定数据的消耗

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

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

5.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")

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

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

表 5.4. 最终路径计算摘要

SERVICE_BINDING_ROOT最终路径

不可用

/bindings/<ServiceBinding_ResourceName>

dir/path/root

dir/path/root/<ServiceBinding_ResourceName>

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

要在现有 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 数据库服务类型的绑定数据。

5.7.3. 投射绑定数据

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

先决条件

  • 您了解以下概念:

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

流程

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

5.7.4. 其他资源