跳转到主要内容

适用于Python应用程序的Kubernetes服务绑定库

项目描述

PyServiceBinding

适用于Python应用程序的Kubernetes服务绑定库

PyPI - Downloads Release Supported Python Versions CI

Kubernetes的服务绑定规范将后端服务密钥公开给应用程序标准化。此项目提供了一个Python模块,用于消费投射到容器中的绑定。规范中的应用程序投射部分描述了绑定是如何投射到应用程序中的。投射的主要机制是通过挂载到特定目录的文件。可以通过SERVICE_BINDING_ROOT环境变量发现绑定目录路径。操作员必须已将SERVICE_BINDING_ROOT环境变量注入到创建绑定的所有容器中。

在此服务绑定根目录中,可能存在来自不同服务绑定的多个绑定。例如,假设一个应用程序需要连接到数据库和缓存服务器。在这种情况下,一个服务绑定可以提供数据库,另一个服务绑定可以提供对缓存服务器的绑定。

让我们看看规范中给出的示例

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

在上面的示例中,在SERVICE_BINDING_ROOT目录下有两个绑定。account-databasetransaction-event-system是绑定的名称。每个绑定目录中的文件都有一个特殊文件名为type,您可以通过该文件的值来识别投射到该目录的绑定类型。在某些目录中,您还可以看到另一个名为provider的文件。提供者是进一步缩小类型的附加标识符。此模块使用type字段,可选地使用provider字段来查找绑定。

安装

您可以使用pip安装此包

pip install pyservicebinding

用法

可以像这样实例化ServiceBinding对象

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

要获取特定type的绑定,例如postgresql

bindings_list = sb.bindings("postgresql")

要获取特定type(例如mysql)和provider(例如mariadb)的绑定

bindings_list = sb.bindings("mysql", "mariadb")

要获取所有绑定,无论typeprovider如何

bindings_list = sb.all_bindings()

这是模块的完整API

class ServiceBindingRootMissingError(Exception):
    pass


class ServiceBinding:

    def __init__(self):
        """
        - raise ServiceBindingRootMissingError if SERVICE_BINDING_ROOT env var not set
        """

    def all_bindings(self) -> list[dict[str, str]]:
        """Get all bindings as a list of dictionaries

        - return empty list if no bindings found
        """

    def bindings(self, _type: str, provider: typing.Optional[str] = None) -> list[dict[str, str]]:
        """Get filtered bindings as a list of dictionaries

        - return empty dictionary if no binding found
        - filter the result with the given _type input
        - if provider input is given, filter bindings using the given type and provider
        """

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

pyservicebinding-0.3.0.tar.gz(8.9 KB 查看哈希值

上传时间:

构建分布

pyservicebinding-0.3.0-py3-none-any.whl(10.3 KB 查看哈希值

上传时间: Python 3

支持者